当前位置: 首页 > news >正文

如何用Qt实现一个无标题栏、半透明、置顶(悬浮)的窗口

在Qt框架中,要实现一个无标题栏、半透明、置顶(悬浮)的窗口,需要一些特定的设置和技巧。废话不多说,下面我将以DrawClient软件为例,介绍一下实现这种效果的四个要点。

要点一:移除标题栏(去除关闭、最小化、最大化按钮)

在窗口的构造函数中设置窗口的样式,在强调一下,一定要找构造函数中设置,否则有些平台可能无效

setWindowFlags(Qt::FramelessWindowHint);

要点二:实现半透明效果(窗口半透明,而非控件半透明)

setWindowOpacity(0.5);

要点三:实现置顶(悬浮)效果

加入Qt::WindowStaysOnTopHint标志

setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);

要点四:实现窗口移动

重写mousePressEvent()mouseMoveEvent()mouseReleaseEvent()

void mousePressEvent(QMouseEvent* event) override
{if (event->button() == Qt::LeftButton){m_isDragging = true;m_dragPos = event->globalPos() - QWidget::pos();}QWidget::mousePressEvent(event);
}void mouseMoveEvent(QMouseEvent* event) override
{if (m_isDragging){if (!QWidget::isMaximized() && !QWidget::isFullScreen()) { QWidget::move(event->globalPos() - m_dragPos); }}QWidget::mouseMoveEvent(event);
}void mouseReleaseEvent(QMouseEvent* event) override
{m_isDragging = false;QWidget::mouseReleaseEvent(event);
}

效果图
相关项目:https://gitee.com/xktesla/draw-client/releases
在这里插入图片描述

http://www.lryc.cn/news/301606.html

相关文章:

  • ViT: transformer在图像领域的应用
  • Sora 的工作原理(及其意义)
  • Java学习笔记2024/2/16
  • XLNet做文本分类
  • Swift 5.9 新 @Observable 对象在 SwiftUI 使用中的陷阱与解决
  • 分享一个学英语的网站
  • 【动态规划】【C++算法】2742. 给墙壁刷油漆
  • 【后端高频面试题--设计模式上篇】
  • P3141 [USACO16FEB] Fenced In P题解
  • Android Compose 一个音视频APP——Magic Music Player
  • Nginx实战:安装搭建
  • Qt之条件变量QWaitCondition详解(从使用到原理分析全)
  • OpenSource - 一站式自动化运维及自动化部署平台
  • 【后端高频面试题--设计模式下篇】
  • 这才是大学生该做的副业,别再痴迷于游戏了!
  • Ubuntu20.04 安装jekyll
  • AWK语言
  • 精通Nmap:网络扫描与安全的终极武器
  • Java 学习和实践笔记(11)
  • 开发实体类
  • 人工智能学习与实训笔记(十五):Scikit-learn库的基础与使用
  • 插值与拟合算法介绍
  • 下一代Windows系统曝光:基于GPT-4V,Agent跨应用调度,代号UFO
  • 二.自定义头文件
  • 【AIGC】Stable Diffusion之模型微调工具
  • 探索未来科技前沿:深度学习的进展与应用
  • PTA | Wifi密码
  • Linux中gdb使用说明书
  • LInux——开发工具的使用
  • 沁恒CH32V30X学习笔记03--64位systick