新建一个窗体,在类中重写鼠标事件:mousePressEvent()、mouseMoveEvent()、以及绘制函数paintEvent(),以达到该不规则窗体可以通过鼠标随意拖拽,双击关闭该窗体
在构造函数中
//设置窗口flags,去窗口边框
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
//设置窗口属性 背景透明
this->setAttribute(Qt::WA_TranslucentBackground);
重写鼠标事件、画画事件
void myWidget::paintEvent(QPaintEvent *event){
QPainter ptr(this);
ptr.drawPixmap(0,0,QPixmap(":/new/prefix1/py.png"));
}
void myWidget:: mousePressEvent(QMouseEvent *event){
if(event->button() == Qt::LeftButton)
//记录鼠标位置与当前窗体位置的差
this->diff_pos = event->globalPos() - this->pos();
}
void myWidget:: mouseMoveEvent(QMouseEvent *event){
if(event->buttons() & Qt::LeftButton )
//窗体移到 当前鼠标位置 - 位置差
this->move(event->globalPos()-diff_pos);
}
void myWidget:: mouseDoubleClickEvent(QMouseEvent *event){
if(event->button() == Qt::LeftButton)
this->close();
}