【发布时间】:2021-07-07 12:39:07
【问题描述】:
我试图在启动期间隐藏我的 Qt 桌面应用程序的 MainWindow,并显示启动画面。两者都只发生在加载阶段之后,即使我在加载阶段之前调用了splash.show() 和window.hide()。我试图拆分加载阶段和构造函数,但结果是一样的。如何在加载阶段之前实现两者?
更新 1
为了显示启动画面,我必须添加对 QApplication::processEvents() 的调用
更新 2
这个黑色的窗口其实不是MainWindow,而是一个幽灵窗口,因为在构造函数中调用了scrollArea->setVisible(true)而弹出。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPixmap pixmap(QStringLiteral(":/ressources/icons/icon.png"));
QSplashScreen splash(pixmap);
splash.show();
MainWindow window; // this loads for 5-6 seconds
a.processEvents();
window.showLoginPrompt();
splash.finish(&window);
return a.exec();
}
【问题讨论】:
-
您在示例中缺少
app.processEvents();:https://doc.qt.io/qt-5/qsplashscreen.html#details 在代码中,您显示消息处理/事件循环,所有显示更新都不会发生,直到 a.exec() 运行。 -
@drescherjm 它适用于飞溅,谢谢。在加载过程中它仍然显示一个黑色的主窗口。
标签: c++ qt qt5 splash-screen