前言

用 Qt 做 Windows 软件开发,有时候会用到窗口置顶功能,其实 Qt 有自带的接口来实现窗口置顶,但是效果并不太理想,比如说没办法置顶于系统标题栏,或者在全屏状态下如果有键盘事件的时候窗口置顶就不管用了,总的来说不太稳定,这时候就需要调用 Windows 自身的接口来实现该功能了.

正文

首先在工程文件pro中添加库

win{LIBS += -lUser32
}

为了保证窗口始终置顶,这里我在窗口中开启一个定时器去执行以下函数

#ifdef Q_OS_WINSetWindowPos((HWND)this->winId(), HWND_TOPMOST, this->x(), this->y(), this->width(), this->height(), SWP_SHOWWINDOW);SetWindowLong((HWND)this->winId(), GWL_EXSTYLE, GetWindowLong((HWND)this->winId(), GWL_EXSTYLE) | WS_EX_NOACTIVATE);
#endif

需要包含头文件

#ifdef Q_OS_WIN
#include "Windows.h"
#endif

通过以上方法就可以将窗口置顶了,但是在实际项目中发现了一个问题,如果调用了这个接口实现置顶,那么如果再讲窗口设置 hide(),那么程序在系统栏上的图标没办法隐藏.
我的应用场景如下:
主窗口 A,在主窗口中创建一个副窗口 B,但是不指定 B 的父窗口,并且在 B 窗口中调用以上函数实现窗口置顶,那么在启动的时候 B 窗口就会独立出来并且置顶,而系统状态栏上就出现了两个窗口图标(因为 B 没有置顶父窗口),这时候在 A 窗口中调用接口将 B 窗口隐藏(hide),如果在没调用 Windows 接口置顶的情况下B 窗口图标是可以隐藏的,但是如果调用了以上接口,B 窗口图标就没办法隐藏.
我遇到的这个问题暂时没找到解决办法.

Qt 调用 Windows 接口实现窗口置顶相关推荐

  1. QT实现窗口置顶、置顶状态切换、多窗口置顶优先关系

    我们使用QT进行界面开发时,可能会遇到需要将窗口置顶的情况.最常见的就是,需要制作一个悬浮工具栏,悬浮菜单,甚至是悬浮的画板.这就意味这我们需要将这个窗口置顶于"系统"以及我们自己 ...

  2. VS2017 + Qt设置窗口置顶与不置顶的注意问题

    Qt中默认的设置窗口置顶的方法是: Qt::WindowFlags flag = windowFlags(); setWindowFlags(flag | Qt::WindowStaysOnTopHi ...

  3. 窗口置顶小工具TopMost

    分享一款好用的windows电脑的窗口置顶小工具--TopMost. 下载链接: https://download.csdn.net/download/k1ttyLove/87579537 运行此软件 ...

  4. QT程序 windows窗口置顶和linux窗口置顶遇到的问题和解决方案

    一.QT 窗口置顶 一般情况下,我们开发QT桌面应用程序如需用到窗口置顶操作时,会这样做: setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHin ...

  5. QT中窗口置顶失效问题解决方案

    在使用函数setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint )进行窗口置顶时,发现在windows10下有时能置顶,有时 ...

  6. Qt窗口置顶的俩种方法

    一,QT属性设置: setWindowFlags(Qt::WindowStaysOnTopHint); 二,Windows原生函数: // 置顶,this指当前的窗口 ::SetWindowPos(H ...

  7. 【QT学习】如何隐藏标题栏、任务栏图标及子窗口置顶?(附常用窗口标志)

    文章目录 前言 一.标题栏隐藏 二.子窗口置顶 三.任务栏图标隐藏 四.单击任务栏图标显示(隐藏)窗口 附:QT常用窗口标志 总结 前言    本篇,将介绍如何隐藏窗口标题栏.任务栏图标以及子窗口置顶 ...

  8. Qt实用技巧:Qt窗口置顶

    若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子Qt C++ Linux Arm_长沙红胖子_CSDN博客-Qt开发,图形图像处理,OpenCV图像处理领域博主 原博主博客导航:红胖子( ...

  9. Windows 任意窗口置顶显示

    让任意窗口置顶显示 Window TopMost Control 是一款非常小巧简单的 Windows 软件,功能也只有一个--就是让任意窗口置顶显示. 官网:Window TopMost Contr ...

最新文章

  1. 大牛实战归纳——Kafka架构原理
  2. 灰度值取值范围_一幅灰度图像,用8bit量化,取值范围为[0,255],其中0表示(),255表示()。...
  3. Java知识点总结(Java容器-EnumSet)
  4. GPIO口模拟I2C操作
  5. linux python连接oracle数据库_Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法...
  6. 仿ios桌面vivo_vivo全新OriginOS细节曝光:系统UI大变样
  7. Docker容器的数据卷备份与恢复
  8. 传智播客Java常量进制转换数据类型
  9. 《阿里感悟》- 技术人员的职业规划
  10. 即刻VR 唯快不破——2021服贸会的黑科技应用侧记
  11. setuna.exe在win10下使用,桌面自动放大问题
  12. Java中回调函数详解
  13. Java架构师发展路线
  14. Chrom安装Axure插件浏览原型图
  15. android批量发送短信
  16. win10 uwp 商业游戏
  17. 高频信号发生器设计—电容三点式振荡电路
  18. 弱密码验证不能连续字符(如123、abc)连续3位或3位以上、不能相同字符(如111、aaa)连续3位或3位以上
  19. 如何简单粗暴解决echars大数据量渲染卡顿问题
  20. 用python绘制熊猫图案_在matplotlib中绘制熊猫日期

热门文章

  1. 网易云 IM SDK 4.2.0版本逆袭升级!
  2. c语言中数组作为形参
  3. CentOS 7 Root用户密码重置 2017-04-02
  4. Android被逼学习例子2
  5. memcached(九)--LRU
  6. PHP实例——产生随机字符串
  7. 读书笔记:人月神话的博客积极的心态读后感
  8. 调试中的一些Python错误
  9. matplotlib 一张图多个图,如何在Matplotlib中绘制同一个图上的多个函数?
  10. 5 HBase命令行接口