Qt的任务是创建一个开源、跨平台的C++利用程序开发框架。它提供了一种基于对象和事件驱动编程的方式来创建用户界面,并且具有丰富的工具集,可以用于构建各种类型的利用程序。Qt的任务是为开发者提供一种简单易用的开发环境,使他们能够快速地开发出高质量的软件产品。

qt任务栏-qt任务

如何隐藏QT窗口在任务栏的任务图标

现在用到的挺多的软件基本都需要实现到这些个的功能。

1.对于无边框透明的窗口,其实两个设置两句话就搞定了

setAttribute(Qt::WA_TranslucentBackground);

setWindowFlags(Qt::FramelessWindowHint);

然后就是这样之后无法响应鼠标的拖动,所以你要重载时间处理函数来实现鼠标的按下然后拖动的时间,其实就是根据鼠标的移动事件,判断如果按键是按下的状态,那么久move整个控件这样子。当然你觉得如果好多个窗口都要实现这个功能或者说你觉的写在程序的窗口类里面去重载这些个函数不太好。那么你可以自己建一个QOBJECT,然后利用这个object来处理窗口的事件。例如你的win窗口,需要实现这个功能,那么你就调用

win->installEventFilter(this);this指的是你自己新建的用来处理拖动的时间的qobject类,然后多个win你都可以注册到这个obj上,之后你注册过的窗口的事件都会经过这个obj,你就可以在这里eventFilter(QObject* obj, QEvent* event) 拿到鼠标的移动的信息,还可以判断拿到的对象,然后去实现想要的功能。其实用到的就是installEventFilter这个函数的事件注册的效果而已,然后有一点比较重要的就是installEventFilter注册过的窗口,事件触发时候的优先级是越后注册的优先级越高,所以在后来注册的类里如果你在eventFilter里做完处理return了一个true,那消息就不会继续走,后面(先前注册的类)就拿不到这个消息。这个是要注意一下的,根据需求也能调整一下注册的顺序。对应的卸载就是removeEventFilter函数。

2.然后说一下托盘的事情

托盘其实利用的是QSystemTrayIcon这个类来实现。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。