赞
踩
目录
为了某些项目的需求,特意研究了一下Qt窗口强制永久置顶的方法。
这种方法适合Windows系统上,应用强制置顶
pro文件中调用Windows提供库:
LIBS += -lUser32
头文件
#include "Windows.h"
QTimer *m_timer;
- m_timer = new QTimer();
- m_timer->start(1000); //程序每隔1秒置顶一次
-
- connect(m_timer, &QTimer::timeout, [=]{
- #ifdef Q_OS_WIN32
- SetWindowPos((HWND)this->winId(),HWND_TOPMOST,this->pos().x(),this->pos().y(),this->width(),this->height(),SWP_SHOWWINDOW);
- #endif //要在windows上不获取焦点切置顶,必须用Windows API
- });
在Qt5中,最常用的窗口置顶方法是设置窗口标志(Window Flags)。
具体来说,就是使用Qt::WindowStaysOnTopHint这个标志
- #include <QMainWindow>
- // ...
- QMainWindow window;
- window.setWindowFlags(Qt::WindowStaysOnTopHint);
- window.show();
这里,setWindowFlags函数用于设置窗口标志。Qt::WindowStaysOnTopHint则是QT预定义的一个标志,用于使窗口保持在所有其他窗口的顶部。
使用raise()和activateWindow()函数
除了使用窗口标志外,还可以使用raise()和activateWindow()函数来将窗口置于顶部。
- window.raise();
- window.activateWindow();
这两个函数通常一起使用,以确保窗口不仅置顶,而且获得焦点。
两种方法各有千秋,个人还是喜欢用第一种。Qt 虽然已经做的不错了,但毕竟不是各个系统的亲儿子,调用各个系统的API还是要更给力一些
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。