【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、核心代码

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
});

3、方法二:Qt的WindowStaysOnTopHint

在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();

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

4、总结语

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

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙振宇

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值