当前位置:   article > 正文

【Qt 学习之路】Qt窗口强制永久置顶_qt 置顶

qt 置顶

目录

1、简述

2、方法1:Qt+Windows系统API

2.1、效果

2.2、引用

2.3、定义QTimer

2.4、核心代码

3、方法二:Qt的WindowStaysOnTopHint

4、总结语


1、简述

为了某些项目的需求,特意研究了一下Qt窗口强制永久置顶的方法。

2、方法1:Qt+Windows系统API

这种方法适合Windows系统上,应用强制置顶

2.1、效果

2.2、引用

pro文件中调用Windows提供库:

LIBS += -lUser32

头文件

#include "Windows.h"

2.3、定义QTimer

QTimer *m_timer;

2.4、核心代码

  1. m_timer = new QTimer();
  2. m_timer->start(1000); //程序每隔1秒置顶一次
  3. connect(m_timer, &QTimer::timeout, [=]{
  4. #ifdef Q_OS_WIN32
  5.   SetWindowPos((HWND)this->winId(),HWND_TOPMOST,this->pos().x(),this->pos().y(),this->width(),this->height(),SWP_SHOWWINDOW);
  6. #endif //要在windows上不获取焦点切置顶,必须用Windows API
  7. });

3、方法二:Qt的WindowStaysOnTopHint

Qt5中,最常用的窗口置顶方法是设置窗口标志(Window Flags)。

具体来说,就是使用Qt::WindowStaysOnTopHint这个标志

  1. #include <QMainWindow>
  2. // ...
  3. QMainWindow window;
  4. window.setWindowFlags(Qt::WindowStaysOnTopHint);
  5. window.show();

这里,setWindowFlags函数用于设置窗口标志。Qt::WindowStaysOnTopHint则是QT预定义的一个标志,用于使窗口保持在所有其他窗口的顶部。

使用raise()和activateWindow()函数
除了使用窗口标志外,还可以使用raise()和activateWindow()函数来将窗口置于顶部。
 

  1. window.raise();
  2. window.activateWindow();

这两个函数通常一起使用,以确保窗口不仅置顶,而且获得焦点。

4、总结语

两种方法各有千秋,个人还是喜欢用第一种。Qt 虽然已经做的不错了,但毕竟不是各个系统的亲儿子,调用各个系统的API还是要更给力一些

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/682405
推荐阅读
相关标签
  

闽ICP备14008679号