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.自定义最大最小化及关闭按钮,实现相关功能即可

 

 

 

你可能感兴趣的:(QT)