QT窗口圆角和鼠标拖动

QT

Posted by YiMiTuMi on July 26, 2019

圆角边框设计

在QT使用时为了界面的美观对其4个角进行圆弧化设置,并去掉了标题栏,从使界面看起来简介:

//界面圆角,圆角后鼠标不能拖动
QBitmap bmp(this->size());
bmp.fill();
QPainter p(&bmp);
p.setPen(Qt::NoPen);
p.setBrush(Qt::black);
p.drawRoundedRect(bmp.rect(),10,10); //设置圆弧化大小
setMask(bmp);

鼠标拖动设置

在去掉标题栏后鼠标就没法拖动界面了,所以需要对界面鼠标点击事件虚函数进行重写:

声明:

//鼠标响应,对虚类进行重写
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
bool m_Drag = true;
QPoint m_DragPosition;

定义:

//鼠标:点击位置
void ModWindow::mousePressEvent(QMouseEvent *e)
{
    //鼠标拖动无边框界面组合函数
    if(e->button() == Qt::LeftButton){
        m_Drag = true;
        m_DragPosition = e->globalPos() - this->pos();
        e->accept();
    }
    tempFlag = true;
}

//鼠标:移动目标位置
void ModWindow::mouseMoveEvent(QMouseEvent *e)
{
    //鼠标拖动无边框界面组合函数
    if(!tempFlag)
        return;

    if(m_Drag && (e->buttons() && Qt::LeftButton)){
        move(e->globalPos() - m_DragPosition);
        e->accept();
    }
}

//鼠标:释放重置
void ModWindow::mouseReleaseEvent(QMouseEvent *e)
{
    //鼠标拖动无边框界面组合函数,重置
    m_Drag - false;
    tempFlag = false;
}

海芋花(橙红色)– 我喜欢你