如何在初始显示()后将小部件添加到 QSplashScreen?
How to add widget to QSplashScreen after initial show()?
所以我预期的程序流程是这样的:
- 创建,
show()
QSplashScreen
实例。
- 初始化系统的其他部分,包括i18n模块
- 将(翻译的)版权声明 (
QLabel
) 添加到 QSplashScreen
实例。
问题是,除非我hide()
启动画面,调用QApplication::processEvents
,添加QLabel
,然后重新show()
启动画面——导致明显的巨大闪烁——QLabel
没有呈现。
也就是说,我不会看到通知,如果我只写这个:
QLabel* pSplashNotice = new QLabel( mpSplashScreen );
pSplashNotice->setObjectName( "SplashNotice" );
pSplashNotice->setWordWrap( true );
pSplashNotice->setText( Localize(my_text) );
pSplashNotice->resize( 1200, 50 );
pSplashNotice->move( 100, 1000 );
mpSplashScreen->raise();
mpSplashScreen->show();
我必须在上面加上
mpSplashScreen->hide();
QApplication::processEvents(QEventLoop::AllEvents);
如何才能 pSplashNotice
在不隐藏启动画面的情况下进行渲染?
您应该添加以下调用
pSplashNotice->show();
所以我预期的程序流程是这样的:
- 创建,
show()
QSplashScreen
实例。 - 初始化系统的其他部分,包括i18n模块
- 将(翻译的)版权声明 (
QLabel
) 添加到QSplashScreen
实例。
问题是,除非我hide()
启动画面,调用QApplication::processEvents
,添加QLabel
,然后重新show()
启动画面——导致明显的巨大闪烁——QLabel
没有呈现。
也就是说,我不会看到通知,如果我只写这个:
QLabel* pSplashNotice = new QLabel( mpSplashScreen );
pSplashNotice->setObjectName( "SplashNotice" );
pSplashNotice->setWordWrap( true );
pSplashNotice->setText( Localize(my_text) );
pSplashNotice->resize( 1200, 50 );
pSplashNotice->move( 100, 1000 );
mpSplashScreen->raise();
mpSplashScreen->show();
我必须在上面加上
mpSplashScreen->hide();
QApplication::processEvents(QEventLoop::AllEvents);
如何才能 pSplashNotice
在不隐藏启动画面的情况下进行渲染?
您应该添加以下调用
pSplashNotice->show();