gpt4 book ai didi

c++ - 带隐藏和 WA_QuitOnClose 的 Qt QDialog

转载 作者:行者123 更新时间:2023-11-28 08:00:04 24 4
gpt4 key购买 nike

我有一个问题,我在 main() 中这样调用我的 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);
}

这是一个非常简单的代码,问题是:setVisible(false) 或 hide() 行显示了关于窗口,但是一旦该窗口被关闭,就会发送一个“拒绝”对话框代码,我的应用程序将关闭执行

// Rejected
return EXIT_SUCCESS;

main() 的几行

这是为什么呢?在文档中我读到 hide() 不应该返回任何东西。我正在使用 Qt 4.8.2

最佳答案

QDialog::setVisible(false) 会中断它自己的事件循环,但您可以显式调用该函数的基类版本,QWidget::setVisible,而不是为了避免这种行为:

void splashWin::show_About_Window()
{
MyAboutWindow win;
QWidget::setVisible(false);
win.exec();
setVisible(true);
}

关于c++ - 带隐藏和 WA_QuitOnClose 的 Qt QDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11713023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com