很多时候,为了方便软件的使用,我们需要让编写的界面程序显示在最上层,这时候就需要对窗口属性进行调整。网上给的常用方案是给窗口设置显示在最前的属性:
//Qt::FramelessWindowHint表示窗口是无边框的窗口,不显示标题栏
//Qt::Tool表示是工具窗口不在任务栏显示程序图标
//Qt::WindowsStayOnTopHint表示窗口显示在最上层
//Qt::WindowDoesNotAcceptFocus表示窗口不接受焦点
setWindowFlags(Qt::FramelessWindowHint
| Qt::Tool
| Qt::WindowStaysOnTopHint
| Qt::WindowDoesNotAcceptFocus);
采用这种方案窗口第一次显示的时候是可以保持在最上层的,但是如果窗口隐藏了之后再次显示的后往往最前的状态很容易被抢占,使得窗口无法继续保持在最前面显示。为了让窗口保持在最前面显示,我们需要在窗口再次显示之后将窗口设置到最前显示,在windows下设置方法如下
//窗口再次显示的时候
//通过设置属性让窗口显示在最前
if(!this->isVisible())
{
this->setVisible(true);
#ifdef _WIN32
::SetWindowPos(HWND(this->winId()),H