【发布时间】:2016-11-03 15:56:13
【问题描述】:
我有 QMainWindow,其中嵌入了 QQuickWidget。QQuickWidget 根据应用的状态(初始化与否)显示两个不同的 qml(splash.qml 和 main.qml)。
我希望我的窗口在显示 splash.qml 时处于 splashScreen 模式,所以我这样做了:
MainWindow::MainWindow(QMainWindow * parent) :QMainWindow(parent)
{
QApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
mDefaultFlags = windowFlags();
setAttribute(Qt::WA_DeleteOnClose, true);
setWindowFlags(Qt::SplashScreen);
mQuickWidget = new QQuickWidget(this);
//...
setCentralWidget(mQuickWidget);
mQuickWidget->show();
}
当初始化完成并加载另一个 qml 文件时,QML 会触发一个槽。然后我将标志重置为默认值以从启动画面返回:
void MainWindow::UpdateWindowAfterInit()
{
setWindowFlags(mDefaultFlags);
show();
}
一切都按预期进行,但是当我尝试关闭我的应用程序时,它永远不会到达 main() 的末尾,而如果我不应用 Qt::SplashScreen 标志,它会很好地关闭。
我应该怎么做才能关闭我的应用程序?
【问题讨论】:
-
尝试使用
Qt::FramelessWindowHint而不是Qt::SplashScreen标志。这可能是 QT 中的一个错误。