事件"/>
QMouseEvent事件
开发工具与关键技术: QT
作者:何文涛
撰写时间:2020-5-15
以下是代码部分:
首先头文件先重载三个函数,分别用于鼠标事件和图片
头文件定义
#include “widget.h”
#include “ui_widget.h”
#include
#include
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 *)
{
QPainter p(this);
p.drawPixmap(0, 0, QPixmap("…/Image/sunny.png"));
}
鼠标点击事件,判断左右键,右键退出,左键计算左上角的坐标值
void Widget::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::RightButton)
{
//如果是右键
close();
}
else if(e->button() == Qt::LeftButton)
{
//求坐标差值
//当前点击坐标-窗口左上角坐标
p = e->globalPos() - this->frameGeometry().topLeft();
}
}
计算出左上角坐标P后,在根据鼠标移动方向减去p,于是就把效果做出来了
void Widget::mouseMoveEvent(QMouseEvent *e)
{
if(e->buttons() & Qt::LeftButton)
{
move(e->globalPos() - p);
}
}
运行结果:
去除掉边框后的样子,右键关闭,左键移动
更多推荐
QMouseEvent事件
发布评论