如何用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
在这里插入图片描述

相关推荐

  1. qt窗口

    2024-02-18 23:44:02       27 阅读
  2. Qt程序设计-透明遮罩效果窗口实现

    2024-02-18 23:44:02       56 阅读
  3. QT 标题 实现窗体移动

    2024-02-18 23:44:02       33 阅读
  4. WPF透明窗口wine适配穿透问题解决

    2024-02-18 23:44:02       28 阅读
  5. C++Qt一个鼠标在按钮上悬浮3s显示一个悬浮窗口

    2024-02-18 23:44:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-18 23:44:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-18 23:44:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-18 23:44:02       82 阅读
  4. Python语言-面向对象

    2024-02-18 23:44:02       91 阅读

热门阅读

  1. python中函数的运用(1)

    2024-02-18 23:44:02       50 阅读
  2. STM32的三种下载方式

    2024-02-18 23:44:02       54 阅读
  3. 正则表达式速查表

    2024-02-18 23:44:02       45 阅读
  4. 工厂设计模式

    2024-02-18 23:44:02       42 阅读
  5. windows下Oracle 11g的安装和配置教程的详细步骤

    2024-02-18 23:44:02       56 阅读
  6. 面向过程和面向对象的方式?

    2024-02-18 23:44:02       55 阅读
  7. 力扣:123. 买卖股票的最佳时机 III

    2024-02-18 23:44:02       57 阅读
  8. LeetCode405. Convert a Number to Hexadecimal

    2024-02-18 23:44:02       55 阅读
  9. 使用Typescript对Axios进行二次封装

    2024-02-18 23:44:02       47 阅读
  10. 【矩阵】托普利茨矩阵

    2024-02-18 23:44:02       55 阅读