QT之隐藏任务栏图标
QT之隐藏任务栏图标
应用背景
我们在某些场景下,我们不希望在任务栏上出现我们的窗口的图标,类似QQ主面板,你会发现QQ主面板其实是没有任务栏图标的,那么我们该怎么做?也能让我们的任务栏不显示我们不想要的图标呢!在这之前我们需要了解下QT里的parent参数。
我们在写界面的时候,几乎每个构造函数里都会有一个parent参数。这个参数通常是QObject* 或者是 QWidget* 类型的。初始值0,我们基本上也没理会,但是你有没有想过,这个parent有什么作用呢?“对话框”,对话框一般是不作为顶层容器出现的,因此在任务栏上是没有对话框的位置的,指定对话框的parent属性,任务栏就不会出现图标。如果你不指定,这个对话框就成为顶层容器了,任务栏会出现图标。利用这个特性,就可以实现我们的窗体是否需要在任务栏上出现。
另外很重要的就是,parent参数指明了父窗口,当父窗口delete时,Qt可以保证所有子窗口都会被正确的delete掉,具体,可以参考我前篇文章QT之内存泄漏管理里面有谈到,如何通过设置父窗口,保证我们的内存安全。
效果图
这里大家可以看到我启的应用在任务栏上出现了。
大家注意,我右边,以代表我是真的启了应用,但是在我的任务栏上是没有出现图标的。
上代码
//其实很简单,只要对窗口对象,设置一个父窗口就行。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QApplication::setQuitOnLastWindowClosed(false);
QWidget* parent = new QWidget;
Demo *pDemo = new Demo(parent);
pDemo->show();
pDemo->activateWindow();
int ret = a.exec();
delete parent;
return ret;
}
//还有另外一种方法就是,我们不设置parent属性,使用QT标志位。
//setWindowFlags(Qt::Tool);这样任务栏也不会出现窗口图标
注意:我们在使用parent属性或者Qt::Tool时,最小化的时候,会出现左下角出现一块窗口区域情况,这种情况,你只要最小化的时候使用hide()就不会出现了。
如果你想使用我此篇Demo做测试,可到QT之样式styleSheet去下载源码。
结尾
只为记录,只为分享! 愿所写能对你有所帮助。Good Good Study, Day Day Up!
如果你觉得所写的对你有帮助,默默点个赞哈,你的赞就是我最大的支持,嘿嘿~不要说我骗赞哦,(^__^)
版权声明:本文为ly305750665原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。