Qt 开机界面上无法显示文字信息

l251765114 2016-07-05 09:21:44
想给自己的qt程序搞个开机画面,网上百度了方法都一致,就是用QSplashScreen类来添加启动界面。
开机画面添加也是十分顺利,但是想在界面上显示一些如“正在加载。。。”之类的信息,都没有成功,在桌面还是ARM板上都不能显示。
下面是main函数里的代码,不知道哪里错误了,希望大侠们帮我看看:
QSplashScreen *splash = new QSplashScreen;
splash->setPixmap(QPixmap(":/icons/pics/splash.png"));
splash->show();
Qt::Alignment topRight = Qt::AlignTop | Qt::AlignRight;
splash->showMessage(QObject::tr("Setting up the main window..."), topRight, Qt::red);
sleep(2);
mainwindow w;
splash->showMessage(QObject::tr("Loading modules..."), topRight, Qt::white);
sleep(2);
w.show();
splash->finish(&w);
...全文
644 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷静忍耐 2016-07-08
  • 打赏
  • 举报
回复
不过有试过不加processEvent 我的是可以显示字的,不知道是不是qt版本不一样,qt可能修复这一问题了 processEvent我是为了加载打开很多文件加上的
冷静忍耐 2016-07-08
  • 打赏
  • 举报
回复
引用 4 楼 l251765114 的回复:
[quote=引用 3 楼 u013466477 的回复:] [quote=引用 2 楼 l251765114 的回复:] [quote=引用 1 楼 u013466477 的回复:] 我这么写是有字的,你图片和文字不会是一个颜色被覆盖了吧 QSplashScreen splash(pixmap); splash.show(); splash.showMessage(QObject::tr("Setting up the main window..."), Qt::AlignCenter, Qt::red);
我在showMessage后面加了句a.processEvent()就可以显示了,虽然不知道为什么[/quote] 哦,是的,这个要加上。我的mian函数很长,所以忘了帮你写上了。 其实加在show前面或后面都可以,这个是为了防止界面阻塞不重绘。所以界面阻塞时加上这个,例如保存、打开等会阻塞界面的操作[/quote]你的意思是,没加这个函数,开机界面那个函数就一直阻塞,所以showMessage函数不能显示文字了?[/quote] 可以这么理解,就是阻塞的,界面不可能再去运行其他操作。你去点那个开机界面的图片,是会出现繁忙的旋转鼠标指针
l251765114 2016-07-08
  • 打赏
  • 举报
回复
引用 3 楼 u013466477 的回复:
[quote=引用 2 楼 l251765114 的回复:] [quote=引用 1 楼 u013466477 的回复:] 我这么写是有字的,你图片和文字不会是一个颜色被覆盖了吧 QSplashScreen splash(pixmap); splash.show(); splash.showMessage(QObject::tr("Setting up the main window..."), Qt::AlignCenter, Qt::red);
我在showMessage后面加了句a.processEvent()就可以显示了,虽然不知道为什么[/quote] 哦,是的,这个要加上。我的mian函数很长,所以忘了帮你写上了。 其实加在show前面或后面都可以,这个是为了防止界面阻塞不重绘。所以界面阻塞时加上这个,例如保存、打开等会阻塞界面的操作[/quote]你的意思是,没加这个函数,开机界面那个函数就一直阻塞,所以showMessage函数不能显示文字了?
冷静忍耐 2016-07-07
  • 打赏
  • 举报
回复
引用 2 楼 l251765114 的回复:
[quote=引用 1 楼 u013466477 的回复:] 我这么写是有字的,你图片和文字不会是一个颜色被覆盖了吧 QSplashScreen splash(pixmap); splash.show(); splash.showMessage(QObject::tr("Setting up the main window..."), Qt::AlignCenter, Qt::red);
我在showMessage后面加了句a.processEvent()就可以显示了,虽然不知道为什么[/quote] 哦,是的,这个要加上。我的mian函数很长,所以忘了帮你写上了。 其实加在show前面或后面都可以,这个是为了防止界面阻塞不重绘。所以界面阻塞时加上这个,例如保存、打开等会阻塞界面的操作
l251765114 2016-07-07
  • 打赏
  • 举报
回复
引用 1 楼 u013466477 的回复:
我这么写是有字的,你图片和文字不会是一个颜色被覆盖了吧 QSplashScreen splash(pixmap); splash.show(); splash.showMessage(QObject::tr("Setting up the main window..."), Qt::AlignCenter, Qt::red);
我在showMessage后面加了句a.processEvent()就可以显示了,虽然不知道为什么
冷静忍耐 2016-07-06
  • 打赏
  • 举报
回复
我这么写是有字的,你图片和文字不会是一个颜色被覆盖了吧 QSplashScreen splash(pixmap); splash.show(); splash.showMessage(QObject::tr("Setting up the main window..."), Qt::AlignCenter, Qt::red);

21,496

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧