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

Posted

技术标签:

【中文标题】Qt对话框如何从函数触发accept()和reject()【英文标题】:Qt dialog how can I trigger accept() and reject() from function 【发布时间】:2011-05-26 09:31:55 【问题描述】:

我从 main.cpp 文件打开QDialog 窗口,然后等待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();
    

从 Qt 示例(地址簿)中,我看到我只能使用 accept()reject() 插槽。 问题是我喜欢根据某些功能流程关闭窗口,而不是确定/关闭按钮。 如何从功能中触发这些插槽? .

【问题讨论】:

【参考方案1】:

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

loginDlg->accept();
loginDlg->reject();

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

loginDlg->done(QDialog::Accepted);
loginDlg->done(QDialog::Rejected);

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

【讨论】:

【参考方案2】:

只需调用它们..它们是正常函数..

例如:

loginDlg->accept();

另见this..

【讨论】:

以上是关于Qt对话框如何从函数触发accept()和reject()的主要内容,如果未能解决你的问题,请参考以下文章

qt 不点击按钮触发按钮clicked事件

在类中覆盖 Qt 函数

accept()函数用来告诉Qt,事件处理函数“接收”了这个事件,不要再传递;ignore()函数则告诉Qt,事件处理函数“忽略”了这个事件,需要继续传递(看一下QWidget::mousePress

qt修正参数怎么调用自定义函数

如何从另一个线程关闭对话框? Qt

Qt信号与槽函数问题