Qt对话框如何从函数中触发accept()和reject()

use*_*898 2 c++ qt qdialog

我有情况,我QDialog从main.cpp文件打开窗口,然后我等待exec()方法返回基于成功或失败的QDialog.像这样 :

   int main( ... ) {
    LoginDialog *loginDlg = new LoginDlg;

    if( loginDlg->exec() != Qt:;Accepted ) {
    return 0;
    }

    //check the login Info
    delete loginDlg;

    MainWindow w;
    w.show()
    return app.exec();
    }
Run Code Online (Sandbox Code Playgroud)

从Qt示例(地址簿)我看到我可以使用accept()和reject()插槽.问题是我喜欢基于某些功能流关闭的窗口,而不是ok/close按钮.如何从功能中触发这些插槽?.

Fiv*_*kis 6

正如liaK所指出的,您可以从代码中调用以下函数:

loginDlg->accept();
loginDlg->reject();
Run Code Online (Sandbox Code Playgroud)

您还可以使用结果作为参数调用以下等效函数:

loginDlg->done(QDialog::Accepted);
loginDlg->done(QDialog::Rejected);
Run Code Online (Sandbox Code Playgroud)

PS:请注意,您的问题中没有指定Qt :: Accepted值.正确的常量是QDialog :: Accepted