QD QDialog со скрытой и WA_QuitonClose
-
13-12-2019 - |
Вопрос
У меня есть проблема, я называю моим QDialog, как это в главном ():
app.setQuitOnLastWindowClosed(true);
splashWin startWin;
if(!startWin.exec())
{
// Rejected
return EXIT_SUCCESS;
}
// Accepted, retrieve the data
startWin.myData...
.
и в QDialog у меня есть следующий код:
splashWin::splashWin(QWidget *parent) :
QDialog(parent),
ui(new Ui::splashWin)
{
ui->setupUi(this);
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
this->setAttribute(Qt::WA_QuitOnClose);
}
void splashWin::on_OK_clicked()
{
// Prepare my data
..
accept();
}
void splashWin::show_About_Window()
{
MyAboutWindow win;
setVisible(false); // <- this causes the application to send a "reject" signal!! why??
win.exec();
setVisible(true);
}
.
Это довольно простой код, проблема в том, что STAVIBIBE (FALSE) или SHITE () строка показывает окно о окне о том, что, как только это окно отклонено диалогового окна «Отклонить», и мое приложение закрывает выполнение .
// Rejected
return EXIT_SUCCESS;
.
Линии основных ()
Почему это?В документации я прочитал, что скрыть () не должен ничего вернуть.Я использую Qt 4.8.2
Решение
QDialog::setVisible(false)
, прерывает свой собственный контур событий, но вы можете явно позвонить в базовую версию функции, QWidget::setVisible
, вместо этого, чтобы избежать этого поведения:
void splashWin::show_About_Window()
{
MyAboutWindow win;
QWidget::setVisible(false);
win.exec();
setVisible(true);
}
. Не связан с StackOverflow