QT鼠标事件与滚轮事件-拖动窗口-双击全屏-右键显示自定义鼠标图标
void MainWindow6_3::mouseMoveEvent(QMouseEvent *event)实现拖动窗口移动滚轮事件时间编辑框文字放大缩小功能
#ifndef MAINWINDOW6_3_H #define MAINWINDOW6_3_H //by txwtech #includeQT_BEGIN_NAMESPACE namespace Ui { class MainWindow6_3; } QT_END_NAMESPACE class MainWindow6_3 : public QWidget { Q_OBJECT public: MainWindow6_3(QWidget *parent = nullptr); ~MainWindow6_3(); private: Ui::MainWindow6_3 *ui; QPoint offset2;//用来储存鼠标指针位置与窗口位置的差值 protected: void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void wheelEvent(QWheelEvent *event); }; #endif // MAINWINDOW6_3_H
#include "mainwindow6_3.h" #include "ui_mainwindow6_3.h" #include// MainWindow6_3::MainWindow6_3(QWidget *parent) : QWidget(parent) , ui(new Ui::MainWindow6_3) { ui->setupUi(this); // QCursor cursor2;//创建光标对象 cursor2.setShape(Qt::OpenHandCursor);//设置光标的形状 // cursor2.setShape(Qt::CrossCursor);//设置光标的形状 setCursor(cursor2); //使用光标 // setMouseTracking(true); } MainWindow6_3::~MainWindow6_3() { delete ui; } void MainWindow6_3::mousePressEvent(QMouseEvent *event) { if(event->button()==Qt::LeftButton) { //左键按下 QCursor cursor2a; cursor2a.setShape(Qt::ClosedHandCursor); QApplication::setOverrideCursor(cursor2a);//是鼠标指针暂时改变形状 offset2=event->globalPos()-pos();//获取指针位置和窗口位置的差值 } else if(event->button()==Qt::RightButton)//by txwtech { //右键按下 QCursor cursor2ar(QPixmap("../src6_3/logo_txwtech.png")); // QCursor cursor2ar(QPixmap("logo_txwtech.png")); QApplication::setOverrideCursor(cursor2ar);//设置自定义图片作为鼠标指针 } } void MainWindow6_3::mouseReleaseEvent(QMouseEvent *event) { Q_UNUSED(event);//event参数没有用的话,编译会报警,加上词句就可以忽略,编译器不报警 QApplication::restoreOverrideCursor(); } void MainWindow6_3::mouseDoubleClickEvent(QMouseEvent *event) { //双击事件 if(event->button()==Qt::LeftButton) { if(windowState()!=Qt::WindowFullScreen) { setWindowState(Qt::WindowFullScreen);//设置全屏 } else { setWindowState(Qt::WindowNoState);//恢复以前的大小 } } } void MainWindow6_3::mouseMoveEvent(QMouseEvent *event) { //鼠标移动事件 if(event->buttons() & Qt::LeftButton)//这里必须使用buttons(),这里多了一个s,注意与mousePressEvent里面判断左键的区分 { QPoint temp; temp=event->globalPos()-offset2; move(temp);//使用鼠标指针当前的位置减去差值,就得到了窗口应该移动的位置 } } void MainWindow6_3::wheelEvent(QWheelEvent *event) { if(event->delta()>0) { ui->textEdit->zoomIn();//拉近,放大 } else { ui->textEdit->zoomOut();//缩小 } }