Кнопка закрытия на qDialog закрывается только при втором нажатии

Я пытаюсь создать диалоговое окно, содержащее инструмент для рекламы, который отделен от моей основной программы, он запускается из действия в меню.

У меня есть следующий код:

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();

}

С NewDialog определяется в main window.h как QDialog.

Моя проблема заключается в том, что когда я нажимаю кнопку закрытия, диалоговое окно закрывается на доли секунды, а затем снова открывается, после второго нажатия кнопки закрытия оно закрывается навсегда.

Есть ли лучшая реализация или способ обойти это?

Спасибо

1 ответ

Решение

Вы не должны звонить QDialog::show а также QDialog::exec, Вместо этого выберите один, чтобы позвонить.

использование exec если вы хотите заблокировать взаимодействие пользователя с родителем диалогового окна, пока оно открыто. Пользователь не будет играть с чем-либо еще в приложении, пока он не закроет диалог. Это называется модальным.

использование show если вы хотите разрешить пользователю работать с диалоговым окном и остальной частью приложения одновременно.

Обычно вы бы выбрали exec, С ним легче работать. В вашем случае вы отображали диалоговое окно дважды, вызывая обе функции.

Другие вопросы по тегам