【问题标题】:Unable to close a QDialog from a QPushButton inside the dialog with a close action无法通过关闭操作从对话框内的 QPushButton 关闭 QDialog
【发布时间】:2020-02-05 10:16:24
【问题描述】:

我现在搜索了两天,但我没有找到任何关于我的问题的帮助,即从该对话框中的 QPushButton 关闭非模态对话框。

对话框由 QMainWindow 调用,一切正常,但我无法通过按钮关闭对话框,只有十字标记在工作,我不明白为什么它如此棘手,因为它不是模态的,我不明白t 等待“接受”或“拒绝”语句,“关闭”或“完成”更合适。

这是我调用对话框的代码:

void MainWindow::showSystraySettingsDialog()
{
    sDialog = new SystrayDialog(this);
    //sDialog.show();
    sDialog->setModal(false);
    sDialog->setAttribute(Qt::WA_DeleteOnClose);
    sDialog->show();
    sDialog->raise();
    sDialog->activateWindow();
} 

“sDialog”成员是在“MainWindow.h”中声明的指针

这是在我的对话框代码中调用以关闭对话框的操作: SystrayDialog.cpp:

void SystrayDialog::createActions()
{
    closeAction = new QAction(tr("&Close"),this);
    connect(closeAction, &QAction::triggered,this, &SystrayDialog::close);
}

关闭按钮:

    closeButton = new QPushButton;
    closeButton->setText(QString(tr("&Close")));
    closeButton->addAction(closeAction);

我不明白这里的信号需求,我不是在等待任何条件关闭窗口,这个对话框不会将任何参数或值传递给 maindow...

提前感谢您的帮助!

【问题讨论】:

    标签: qt dialog


    【解决方案1】:

    您正在使用 addAction() 将 QAction 设置为 QPushButton,单击 QPushbutton 不会触发该操作。您可能必须将 QPushButton click Signal 连接到 Qdialog close Slot,这非常有效。 或者您可能必须将 QPushButton Click() 信号连接到 closeAction 触发信号,如下所示, 连接(关闭按钮,信号(单击()),关闭动作,信号(触发()));

    【讨论】:

    • 好的,完美,我现在明白为什么它不起作用了......但奇怪的是,触发一个动作设置到一个 QPushButton 'actions' 池没有链接到 clicked() 事件按钮...我将其标记为已解决,再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2012-06-07
    • 1970-01-01
    相关资源
    最近更新 更多