如何用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 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |