实现的效果:
按下鼠标左键来拖动窗口;双击鼠标左键全屏窗口;按鼠标右键则使指针变为自定义的图片;使用滚轮可以放大或者缩编辑器里面的文本大小。
注意:默认是当按下鼠标按键时移动鼠标,鼠标移动事件才会产生;如果不想按下鼠标,也可以获取鼠标移动事件,那么就在构造函数中添加: 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
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!