调用QApplication的quit()方法

sum*_*uma 6 qt

如果我尝试直接使用quit()方法,它正在编译完美,但是在运行时出现错误,说"对象::连接:没有这样的插槽myClass :: quit()." 所以要避免这种情况,有什么办法吗?通过使用方法quitPicture()(定义为槽),应用程序正常工作.这是唯一的解决方案吗?

myClass::myClass(QWidget *parent)
    : QWidget(parent)
{
    QWidget *window = new QWidget;
    window->setWindowTitle(QObject::tr("Class"));

    QPushButton *quitButton = new QPushButton("&Quit");
//    QObject::connect(quitButton, SIGNAL(clicked()), this, SLOT(quit()));      //showing run time error
    QObject::connect(quitButton, SIGNAL(clicked()), this, SLOT(quitPicture())); //working perfectly

    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(this);
    layout->addWidget(quitButton);
    window->setLayout(layout);
    window->show();
}

void myClass::quitPicture()
{
    std::cout << "calling quitPicture" << std::endl;
    QApplication::quit();
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ité 13

按钮的clicked信号可以直接连接到应用程序的quit插槽:

QObject::connect(quitButton, SIGNAL(clicked()),
                 QApplication::instance(), SLOT(quit()));
Run Code Online (Sandbox Code Playgroud)