如何在初始显示()后将小部件添加到 QSplashScreen?

How to add widget to QSplashScreen after initial show()?

所以我预期的程序流程是这样的:

  1. 创建,show() QSplashScreen 实例。
  2. 初始化系统的其他部分,包括i18n模块
  3. 将(翻译的)版权声明 (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();