Qt鼠标拖动ScrollArea代替鼠标滚轮操作
来源:互联网 发布:淘宝申请介入问题描述 编辑:程序博客网 时间:2024/05/16 17:11
因为此前有个项目做的软件要在平板上运行,屏幕不大,滚动条太细,如果加粗滚动条影响美观,滚动条太细又点不到,用户体验较差。所以做了这个鼠标拖动即可代替鼠标滚轮的功能。
dialogex.h
#ifndef DIALOGEX_H#define DIALOGEX_H#include <QDialog>#include <QScrollArea>#include <QScrollBar>#include <QLabel>#include <QMouseEvent>class DialogEx : public QDialog{ Q_OBJECTpublic: DialogEx(QWidget *parent = 0); ~DialogEx(); void init(); QScrollArea* m_pScrollArea; QWidget* m_pScrollWidget; QLabel* m_pTipLabel; bool m_bMousePressed; QPoint m_PressPosition;protected: void mouseMoveEvent(QMouseEvent *e) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE;};#endif // DIALOGEX_H
dialogex.cpp
#include "dialogex.h"DialogEx::DialogEx(QWidget *parent) : QDialog(parent) , m_pScrollArea(NULL) , m_pScrollWidget(NULL) , m_pTipLabel(NULL) , m_bMousePressed(false){ init();}DialogEx::~DialogEx(){}void DialogEx::init(){ this->setFixedSize(300, 200); m_pScrollArea = new QScrollArea(this); m_pScrollWidget = new QWidget(m_pScrollArea); m_pTipLabel = new QLabel("证明我移动了", m_pScrollWidget); m_pScrollArea->setFixedSize(this->width(), this->height()); m_pScrollWidget->setFixedSize(this->width(), this->height() * 2); m_pTipLabel->adjustSize(); m_pScrollArea->setWidget(m_pScrollWidget); m_pScrollArea->setAlignment(Qt::AlignCenter); m_pScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_pScrollArea->move(0, 0); m_pScrollWidget->move(0, 0); m_pTipLabel->move(100, 100);}void DialogEx::mouseMoveEvent(QMouseEvent *e){ if (!m_bMousePressed) { return; } QPoint currentPt = e->pos(); int dist = m_PressPosition.y() - currentPt.y(); m_pScrollArea->verticalScrollBar()->setValue(m_pScrollArea->verticalScrollBar()->value() + dist); m_PressPosition = currentPt;}void DialogEx::mousePressEvent(QMouseEvent *e){ m_bMousePressed = true; m_PressPosition = e->pos();}void DialogEx::mouseReleaseEvent(QMouseEvent *e){ Q_UNUSED(e); m_bMousePressed = false; m_PressPosition.setX(0); m_PressPosition.setY(0);}
main.cpp
#include "dialogex.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); DialogEx w; w.show(); return a.exec();}
例子中只做了竖直方向的拖动,水平方向同理
阅读全文
0 0
- Qt鼠标拖动ScrollArea代替鼠标滚轮操作
- ScrollArea支持鼠标拖动
- 鼠标滚轮操作
- Qt 鼠标拖动缩放
- QT --鼠标拖动界面
- 鼠标滚轮
- QT 鼠标拖动无标题窗口
- QT界面,鼠标滚轮实现缩放问题
- QT 鼠标和滚轮事件学习
- QT界面,鼠标滚轮实现缩放问题
- opengl鼠标操作(包括滚轮操作)
- js 鼠标左键代替滚轮查看网页
- UE4 VR 手柄代替鼠标滚轮(HTC VIVE)
- <Unity>鼠标拖动物体、按下鼠标左键旋转观察物体、鼠标滚轮缩放视野
- <Unity>鼠标拖动物体、按下鼠标左键旋转观察物体、鼠标滚轮缩放视野
- js实现图片滚轮放大缩小以及鼠标拖动
- C# panel控件实现鼠标滚轮滚动拖动滚动条
- JS实现鼠标滚轮缩小放大拖动图片代码
- CSS 加粗(css font-weight)
- 解决Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com
- 关于回调函数的学习1
- PopupWindow的使用
- javascript黑科技之高效填充
- Qt鼠标拖动ScrollArea代替鼠标滚轮操作
- 关于模板匹配的基础知识
- 实现简单的一页展示多条数据左右翻页功能
- Shade in spring-boot-starter-parent is misconfigur
- 多进程小demo
- JAVA实现斐波那契数列
- 18秋招面经
- javascript黑科技之toString
- smack 4.2客户端自定义iq,解析,自定义处理handler