QMouseEvent事件

编程入门 行业动态 更新时间:2024-10-26 12:25:52

QMouseEvent<a href=https://www.elefans.com/category/jswz/34/1770959.html style=事件"/>

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事件

本文发布于:2024-02-11 13:50:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1681317.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:事件   QMouseEvent

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!