首页 新闻 会员 周边

qt creator 在哪里调用了mainwindow的show()方法

0
悬赏园豆:50 [待解决问题]

这几天在看qt creator的源码。
一直没有看到程序在哪里调用了mainwindow的show()方法,单步调试也跟不到。似乎就是main方法的最后一句return restarter.restartOrExit(app.exec());执行完,界面就出来了。
在源代码中全局搜索.show()也没看出来。
qt creator到底是怎么把窗口显示出来的?

老程序员DK的主页 老程序员DK | 初学一级 | 园豆:154
提问于:2022-05-13 14:47
< >
分享
所有回答(2)
0

exec啊

echo_lovely | 园豆:1433 (小虾三级) | 2022-05-13 15:41

exec中是启动了事件循环,并没有show主窗口,参见:https://blog.csdn.net/jiaoyaziyang/article/details/49765217

普通的qt程序写法如下:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
但qt creator的源码里,没看到w.show();这一步

支持(0) 反对(0) 老程序员DK | 园豆:154 (初学一级) | 2022-05-13 15:48
0

程序没有直接调用mainwindows的show()方法,而是在加载过程中,调用了各个widget的show()方法。
比如:在方法void SideBarWidget::setCurrentItem(const QString &id)中,
SideBarItem *item = m_sideBar->item(id);
if (!item)
return;
removeCurrentItem();
m_currentItem = item;
layout()->addWidget(m_currentItem->widget());
m_currentItem->widget()->show();
目前理解是这样的,回头有时间再验证一下。

老程序员DK | 园豆:154 (初学一级) | 2022-05-13 16:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册