这个需求出现在窗口最小化之后又被再次运行的时候。很多用户往往不去注意窗口是否已经存在,而是经常直接再次执行打开窗口操作。为了拦截这种情况,通常我们会去检测到窗口是否已经存在,如果存在则把它恢复正常,而不是再新创建一个。
这个操作是通过 ShowNormal() 实现的,但这个函数在windows和Linux下表现不大一样。
举例说明。比如 f 是指向窗口的指针。
if(f == NULL)
{
f = new Form();
}
f->showNormal();
在windows里,这样就可以了。但在Linux里,除了上面代码,还需要增加一句:
f->activateWindow();
只有这样窗口才会恢复出来。而且在Linux里,showNormal 和 show 表现一样,都可以通过这个方法把窗口恢复出来,但windows里则不行,必须用 showNormal。
在一本比较权威的书里看到show(),raise(),activateWindow()这三个函数连用的写法。但测试没发现raise()有什么不可或缺的作用,有它没它结果都一样。
我的测试环境,win10,ubuntu 22,qt 5.12.9。
标签:窗口,Qt,show,windows,showNormal,Linux,最小化 From: https://www.cnblogs.com/sundp/p/17457456.html