• 4765阅读
  • 4回复

[共享]隐藏任务栏上的程序图标遇到的衍生出来的问题 [复制链接]

上一主题 下一主题
离线gym345600
 

只看楼主 倒序阅读 楼主  发表于: 2014-12-01
新手有用,老鸟请跳过!

最近写了一个程序,程序运行时不想让它在任务栏上显示图标,我采用的方法是写两个窗口A,和B,A是B的parent.
程序运行的时候首先启A,从A中再调用显示B界面,A自已隐藏起来,任务栏上的图标就会隐藏,那么B就是我要用的真正的程序界面,达到了我的目的.

但是继续往下写,会遇到一些衍生的问题,B中有菜单,有些需要弹出一些对话框,现在问题就来了,如果这些对话框是B的child,根本show()不出来,如果把这些对话框的parent设为NULL,当对话框关闭的时候,程序会退出.
中间想到了用各种方法,都过不了Application的quitOnLastWindowClosed 的属性的这一关,百思不得其解啊....


星期六困难扰了我一下午,今天上班继续研究,首选看了一下帮助文档


quitOnLastWindowClosed : bool


This property holds whether the application implicitly quits when the lastwindow is closed.
The default is true.
If this property is true, the applications quits when the last visibleprimary window (i.e. window with no parent) with the Qt::WA_QuitOnClose attribute set isclosed. By default this attribute is set for all widgets except for sub-windows.Refer to Qt::WindowType for a detailedlist of Qt::Window objects.
Access functions:
bool quitOnLastWindowClosed ()
void setQuitOnLastWindowClosed ( bool quit )


上面的Qt::WA_QuitOnClose引起我的注意,它原来是QWidget的一个属性,大概意思只要是最后一个带有这样属性的顶级窗口关闭,应用程序就会退出,那么我把菜单调用的对话框设置成这个属性是不会就解决了?思路来了,马上就去验证,对话框构造函数里加上一句:
setAttribute(Qt::WA_QuitOnClose,false);
完美解决.


总结一下:
要多看帮助文档
离线dbzhang800

只看该作者 1楼 发表于: 2014-12-01
恩,不错。

不过,感觉上
你直接设置 quitOnLastWindowClosed 为 false 应该更简单直接吧?然后想退出程序的时候调用一下 QCoreApplication::quit()
离线gnibuoz

只看该作者 2楼 发表于: 2014-12-01
感觉你没必要这么复杂吧,我记得可以直接设置windowsflag来设置任务栏不显示的...
我就是我,颜色不一样的烟火...
离线gym345600

只看该作者 3楼 发表于: 2014-12-03
回 dbzhang800 的帖子
dbzhang800:恩,不错。
不过,感觉上
你直接设置 quitOnLastWindowClosed 为 false 应该更简单直接吧?然后想退出程序的时候调用一下 QCoreApplication::quit() (2014-12-01 09:16) 

是的我,走了弯路了
离线gym345600

只看该作者 4楼 发表于: 2014-12-03
回 gnibuoz 的帖子
gnibuoz:感觉你没必要这么复杂吧,我记得可以直接设置windowsflag来设置任务栏不显示的...[表情]  (2014-12-01 11:34) 

你说的是把窗口性性改为工具窗口属性,但是这样的窗口标题栏是窄的,不太好看,其它的我想不到有什么属性可以这样改.
我见过金山词霸是可以随时设置,任务栏上是否显示,不知道是采用的什么方法?
快速回复
限100 字节
 
上一个 下一个