要先去窗口边框,再把窗口设置为透明
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QMouseEvent>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//去窗口边框
setWindowFlags(Qt::FramelessWindowHint | windowFlags());
//把窗口背景设置为透明
setAttribute(Qt::WA_TranslucentBackground);
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter p(this);
p.drawPixmap(0,0,QPixmap("C:/Users/kihay/Desktop/Qt/day3/image/boat1.png"));
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton)
{
move(event->globalPos() - p);
}
}
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button()== Qt::RightButton)
{
//如果是右键,关闭窗口
close();
}
else if(event->button()==Qt::LeftButton)
{
//求坐标差值
//当前点击坐标减去窗口左上角坐标
p= event->globalPos() - this->frameGeometry().topLeft();
}
}