【问题标题】:close button on qDialog only closing on second clickqDialog 上的关闭按钮仅在第二次单击时关闭
【发布时间】:2015-03-24 01:10:45
【问题描述】:

我正在尝试生成一个对话框,其中包含一个独立于我的主程序的附加工具,它是由菜单中的操作触发的。

我有以下代码:

void MainWindow::on_actionCalibration_Tool_triggered()
{

    QGridLayout *grid = new QGridLayout;
    NewDialog.setLayout(grid);
    NewDialog.setMinimumHeight(500);
    NewDialog.setMinimumWidth(800);
    QLabel *label = new QLabel;
    QFont sansFont("MS Shell Dlg 2",22, QFont::Bold);
    label->setText("Test");
    label->setFont(sansFont);
    QPushButton *okbutton = new QPushButton;
    QPushButton *closebutton = new QPushButton;
    okbutton->setText("Ok");

    closebutton->setText("Close");
    QTimer *timer = new QTimer;

    connect(okbutton,SIGNAL(clicked()),this,SLOT(on_ScanpB_clicked()));
    connect(closebutton,SIGNAL(clicked()),this,SLOT(CloseDialog()));

    grid->addWidget(label);
    grid->addWidget(okbutton);
    grid->addWidget(closebutton);


    NewDialog.exec();
    NewDialog.show();
}

void MainWindow::CloseDialog()
{
    NewDialog.close();

}

NewDialogmain window.h 中定义为 QDialog。

我的问题是,当我单击关闭按钮时,对话框会关闭片刻然后重新打开,在我第二次单击关闭按钮后它会永久关闭。

有没有更好的实现或解决方法?

谢谢

【问题讨论】:

    标签: qt qdialog


    【解决方案1】:

    您不应致电QDialog::showQDialog::exec。相反,选择一个来调用。

    如果您想在对话框打开时阻止用户与对话框的父级交互,请使用exec。用户在关闭对话框之前不会玩应用程序中的任何其他内容。这称为模态。

    如果您想允许用户同时使用对话框和应用程序的其余部分,请使用 show

    通常你会选择exec。它更容易使用。在您的情况下,您通过调用这两个函数显示了两次对话框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2017-05-02
      相关资源
      最近更新 更多