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

QT窗口阴影+拖动

QT
去除默认边框,为界面添加阴影,实现拖动效果。只是示例,没有完成关闭等按钮,根据具体情况添加,可以使用ui设计画一个。

#include <QApplication>
#include <QWidget>
#include <QPoint>
#include <QMouseEvent>
#include <QGraphicsDropShadowEffect>
#include <QVBoxLayout>

class Window:public QWidget
{
    Q_OBJECT
public:
    Window(QWidget* parent=nullptr){
        this->setWindowFlags(Qt::FramelessWindowHint);
        this->setAttribute(Qt::WA_TranslucentBackground);
        // this->setContentsMargins(3,5,5,3); /*左上右下*/

        QGraphicsDropShadowEffect *shadow_effect = new QGraphicsDropShadowEffect(this);
        shadow_effect->setOffset(0, 0);
        shadow_effect->setColor(Qt::black);
        shadow_effect->setBlurRadius(25);

        QWidget* container = new QWidget(this);
        container->setFixedSize(480,360);
        container->setStyleSheet("background-color:red;");
        container->setGraphicsEffect(shadow_effect);
        QVBoxLayout *layout = new QVBoxLayout(this);
        layout->addWidget(container);
        this->setLayout(layout);
    }
protected:
    void mousePressEvent(QMouseEvent *event) override {
        if (event->button() == Qt::LeftButton) {
            /* 计算鼠标点击位置相对于窗口内部的偏移量*/
            m_offset = event->globalPosition().toPoint() - frameGeometry().topLeft();
            event->accept();
        }
    }

    void mouseMoveEvent(QMouseEvent *event) override {
        if (event->buttons() & Qt::LeftButton) {
            /* 移动窗口 */
            move(event->globalPosition().toPoint() - m_offset);
            event->accept();
        }
    }
private:
    QPoint m_offset;
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Window w;
    w.show();
    return a.exec();
}

#include "main.moc"

效果
在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/507340.html

相关文章:

  • B站评论系统的多级存储架构
  • 图数据库 | 18、高可用分布式设计(中)
  • 【redis】键的全局命令
  • IEC103 转 ModbusTCP 网关
  • JVM远程调试原理剖析
  • 网络安全——常用语及linux系统
  • 机器学习第一道菜(一):线性回归的理论模型
  • Apache Nifi 信息泄露漏洞复现(CVE-2024-56512)(附脚本)
  • Unity学习之UGUI登录界面制作
  • PDF编辑 PDF-XChange Editor Plus 免装优化版
  • 浅谈计算机网络01 | SDN数据平面
  • JVM类加载器(附面试题)
  • Qt Quick 和 Qt Designer
  • 【设计模式-结构型】外观模式
  • 速通Docker === 常用命令
  • 【PCIe 总线及设备入门学习专栏 5.3.3 -- PCIe 掩图 mask 介绍】
  • 【鱼皮大佬API开放平台项目】Spring Cloud Gateway HTTPS 配置问题解决方案总结
  • SM3在线哈希运行
  • 【PPTist】幻灯片放映
  • Kubernetes 部署 RabbitMQ 集群教程
  • MATLAB 2025a更新了些什么?
  • sparkRDD教程之基本命令
  • 【设计模式-结构型】享元模式
  • ‌OCP英文全称是什么
  • ElementTree 库该怎么学习?
  • 华为EulerOS 学习,是否要先 RHCE?