Qmessagebox比主界面先出现,该如何解决

玄狐道士 2017-10-10 10:21:48
因为三做测试,所以就这几行关键代码,如下:

void MainWindow::self_init()
{
ui->MainWindow::stat_label->setStyleSheet("background-color: yellow");
ui->MainWindow::conn_btn->setEnabled(false);
ui->MainWindow::stat_label->setText(tr("正在初始化模块"));
QString address = data_trans.host_address();
ui->MainWindow::self_ip_line->setText(address);
if(data_trans)
{
this->error_stat();
}

}
void MainWindow::error_stat()
{
QMessageBox::warning(0,tr("警告"),tr("初始化失败,请联系开发者"),QMessageBox::Close);
ui->MainWindow::stat_label->setStyleSheet("background-color: red");
ui->MainWindow::stat_label->setText(tr("致命错误:初始化模块失败"));

}

每次启动程序时messagebox都比主界面先一步跳出来,所以在此向各位请教以下如何解决这个问题
...全文
365 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
萧洛 2017-10-12
  • 打赏
  • 举报
回复
2楼说的对,如果你是把self_init()放在构造函数中,肯定先执行,然行才是show()。 你可以在showEvent()事件函数中做判断提示。
  • 打赏
  • 举报
回复
你的self_init()是放在MainWindow的构造函数中?如果是,并且进入了error_stat()函数,肯定是对话框比主窗口先显示,你的self_init()函数需要放在MainWindow的show()调用之后才不会先于主窗口显示。

16,211

社区成员

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

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