QT之无边框窗口+窗体阴影+窗口拖动实现

1.定义窗体类 

2.设置无边框
    this->setAttribute(Qt::WA_TranslucentBackground, true);                                 //设置窗体透明
    this->setWindowFlags(Qt::Window | | Qt::FramelessWindowHint);                   //设置无边框 

3.设置窗体阴影效果

    QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(this);    
    shadow->setOffset(0, 0);                                                                                   //设置阴影距离
    shadow->setColor(QColor("#444444"));                                                           //设置阴影颜色
    shadow->setBlurRadius(10);                                                                            //设置阴影圆角
    ui->widget->setGraphicsEffect(shadow);                                                         //给嵌套QWidget设置阴影
    ui->widget->setStyleSheet("background-color:#E9F1FE");                             //给嵌套QWidget添加颜色

4.添加鼠标拖动窗口事件(重写mousePressEvent、mouseMoveEvent、mouseMoveEvent​​​​​​)

QPoint  m_lastPos;

void mousePressEvent(QMouseEvent *event)
{
    m_lastPos = event->globalPos();
}

void mouseMoveEvent(QMouseEvent *event)
{
    this->move(this->x() + (event->globalX() - m_lastPos.x()),
    this->y() + (event->globalY() - m_lastPos.y()));
    m_lastPos = event->globalPos();
}

void mouseMoveEvent(QMouseEvent *event)
{
    m_lastPos = event->globalPos();
}

5.自定义最大最小化及关闭按钮,实现相关功能即可

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值