鼠标事件 滚轮事件

实现的效果:

按下鼠标左键来拖动窗口;双击鼠标左键全屏窗口;按鼠标右键则使指针变为自定义的图片;使用滚轮可以放大或者缩编辑器里面的文本大小。

注意:默认是当按下鼠标按键时移动鼠标,鼠标移动事件才会产生;如果不想按下鼠标,也可以获取鼠标移动事件,那么就在构造函数中添加:  setMouseTracking(true);//设置鼠标跟踪

//widget.h
protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent * event);
    void mouseDoubleClickEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent * event);
    void wheelEvent(QWheelEvent *event);
private: QPoint offset;//用来存储鼠标指针位置与窗口位置的差值
//widget.cpp

//...构造函数
    QCursor cursor;   //创建光标
    cursor.setShape(Qt::OpenHandCursor);//设置光标形状
    setCursor(cursor); //使用光标
   setMouseTracking(true); //测试无效果
//... void Widget::mousePressEvent(QMouseEvent *event) //鼠标按下事件 { if(event->button() == Qt::LeftButton) //如果是鼠标左键被按下 { QCursor cursor; cursor.setShape(Qt::ClosedHandCursor); QApplication::setOverrideCursor(cursor);//使鼠标指针暂时改变形状 offset = event->globalPos() - pos();//获取鼠标指针位置和窗口位置的差值 } else if(event->button() == Qt::RightButton) //如果是鼠标右键被按下 { QCursor cursor(QPixmap(":main/mouseShape.jpg")); QApplication::setOverrideCursor(cursor); } } void Widget::mouseReleaseEvent(QMouseEvent *event) //鼠标释放事件 { Q_UNUSED(event); QApplication::restoreOverrideCursor(); } void Widget::mouseDoubleClickEvent(QMouseEvent *event) //鼠标双击事件 { if(event->button() == Qt::LeftButton) { if(windowState() != Qt::WindowFullScreen)//如果窗口现在不是全屏 { setWindowState(Qt::WindowFullScreen);//设置为全屏 //setWindowState(Qt::WindowNoState);//否则回复以前的大小 测试效果 } else setWindowState(Qt::WindowNoState);//否则回复以前的大小 } } void Widget::mouseMoveEvent(QMouseEvent *event) //鼠标移动事件 { if(event->buttons() & Qt::LeftButton){ //这里必须是buttons QPoint temp; temp = event->globalPos() - offset; move(temp); //使用鼠标指针当前的位置减去差值,就得到了窗口应该移动的位置 //move(0,0); 测试使用 } } void Widget::wheelEvent(QWheelEvent *event) //滚轮事件 { if(event->delta()>0) //滚轮原理使用者 { ui->textEdit->zoomIn(); //进行放大 } else ui->textEdit->zoomOut(); //进行缩小 }

 

原文链接: https://www.cnblogs.com/azbane/p/8668682.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    鼠标事件 滚轮事件

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/398932

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月12日 上午9:53
下一篇 2023年4月12日 上午9:53

相关推荐