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

这篇具有很好参考价值的文章主要介绍了如何用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
如何用Qt实现一个无标题栏、半透明、置顶(悬浮)的窗口,qt,开发语言文章来源地址https://www.toymoban.com/news/detail-826421.html

到了这里,关于如何用Qt实现一个无标题栏、半透明、置顶(悬浮)的窗口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt鼠标悬停+悬浮窗口

    这两个功能,有很多办法可以实现,这里记一下笔者常用的。 mouseHover.h mouseHover.cpp QRImage.h QRImage.cpp MainWindow.h MainWindow.cpp

    2024年02月06日
    浏览(44)
  • Qt编写视频监控系统74-悬浮工具栏(半透明/上下左右位置/自定义按钮)

    在监控系统中一般在视频实时预览的时候,希望提供一个悬浮工具条,可以显示一些提示信息比如分辨率、码率、帧率,提供一堆快捷操作按钮,可以录像、抓拍、云台控制、关闭等操作,参考了国内很多监控厂商客户端软件,总结下来基本就是悬浮条可以半透明悬浮在通道

    2024年02月06日
    浏览(69)
  • 【Python】实现一个类似于Glass2k的Windows窗口透明化软件

            网上看到一款Windows下的窗口透明化工具Glass2k(Glass2k官网),可以简单地通过快捷键实现任意窗口的透明化,还挺方便的,想用Python自己实现一下类似的功能。          软件已经开源到 :窗口透明化小工具开源地址         效果图如下:         工具包含以

    2024年02月22日
    浏览(34)
  • Python使用PyQt5实现指定窗口置顶

    工作中,同事随口提了一句:要是能让WPS窗口置顶就好了,老是将窗口切换来切换去的太麻烦了。 然后,这个奇怪的点子引起了本人的注意,那就试试能不能实现吧。 不知道是不是我手法或版本的缘故,用了网上找的代码都是窗口弹出而已,并没有把它置顶,可以参考以下

    2024年02月13日
    浏览(52)
  • Qt透明窗口鼠标穿透问题及解决办法

    最近写了个项目,需要播放视频并在视频上做标记框去完成一些功能 因为视频播放使用了 VLC-qt 的库,封装好的窗口控件 没办法直接在该视频窗口上绘图(也许可以?) 出于不想动别人写好的库的想法,想着在视频窗口上加一个透明蒙版-即一个透明窗口,在透明窗口上进行

    2024年02月04日
    浏览(41)
  • 使用CSS实现鼠标悬浮标题出现动态下划线

    今天来实现下面图片的效果     要实现这种效果只需要使用到background这个属性了。 首先创建有个div 输入一段文字 然后在设置background属性  这时候页面就会出现这样子  文字背景填充满了,无法跟动态图一样那么细。别急,css里还有有个background-size属性,设置一下就可以了

    2024年02月09日
    浏览(42)
  • 【Qt】Qt无边框窗口(鼠标点击自定义标题栏)可拖动

    隐藏掉标题栏后,默认情况下窗口无法被鼠标拖动的,需要自己处理鼠标事件,移动窗口达到拖动效果,但是又不想要鼠标点击整个窗口都可以拖动,只需要鼠标点击自定义的标题栏时可拖动 具体步骤如下: 类外初始化 通过鼠标点击事件,判断鼠标是否在标题栏,如果是,

    2024年02月12日
    浏览(41)
  • Qt Windows 去掉标题栏后 最大化窗口时任务栏被窗口遮住问题

    在写Qt窗口时,假如对窗口设置了 Qt::FramelessWindowHint 或者 Qt::CustomizeWindowHint 标志,会发现窗口在副屏上最大化会遮住任务栏。 假如自己实现最大化来解决这个问题,虽然能够解决,但窗口状态就需要自己维护 在Windows中通过拦截窗口消息的方式可以更优雅的解决这个问题 在

    2024年02月05日
    浏览(40)
  • ubuntu下 利用QT 实现嵌入另外一个程序到当前窗口

    查看当前应用窗口名称

    2024年02月11日
    浏览(50)
  • Qt QWidget 抗锯齿圆角窗口的一个实现方案(支持子控件)

    由于 QWidget::setMask 接口设置圆角不支持抗锯齿,所以通常会使用透明窗口加圆角背景,但圆角背景不能满足对子控件的裁剪,子控件与圆角区域重叠的部分还是能显示出来。当然对于大多数窗口,留出足够的边距也是可以接受。 对一些特殊场景,比如QComboBox的列表框,UI设计

    2023年04月24日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包