zoukankan      html  css  js  c++  java
  • 鼠标事件 滚轮事件

    实现的效果:

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

    注意:默认是当按下鼠标按键时移动鼠标,鼠标移动事件才会产生;如果不想按下鼠标,也可以获取鼠标移动事件,那么就在构造函数中添加:  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(); //进行缩小 }
  • 相关阅读:
    思科 ASA 系列防火墙 官方文档下载指南
    Batch批量替换hosts
    OPCDA通信--工作在透明模式下的CISCO ASA 5506-X防火墙配置
    OPC DA通讯 KEP6.4 DCOM 配置脚本
    拖放获取文件信息的bat代码
    禁用UpdateOrchestrator重新启动任务
    SIAMATIC S7-1200 中通过 Modbus RTU 如何读取地址范围 9999 到 65535 的输入字
    提问的智慧 (提问前必读)
    [AHK]输入法状态提示,中文状态提示“中”,英文状态提示“EN”[转]
    Wincc V7.3SE安装截图
  • 原文地址:https://www.cnblogs.com/azbane/p/8668682.html
Copyright © 2011-2022 走看看