删除鼠标滚轮QGraphics视图上的滚动功能
Remove scroll functionality on mouse wheel QGraphics view
我在我的小部件上有一个QGraphicsView窗口,并且刚刚为鼠标滚轮放置了一个事件,该事件放大了图像。
然而,只要我缩放滚动条显示,鼠标滚轮上的滚动功能覆盖了我的缩放功能。
我想知道是否有任何方法可以将滚动全部删除,并添加拖动移动选项,或者可能是CTRL和鼠标滚轮缩放和鼠标滚轮单独控制滚动
这是我的缩放功能(我知道它并不完美),但如果有人能给一些启示,这将是一个奖金
提前干杯
void Test::wheelEvent(QWheelEvent *event)
{
if(event->delta() > 0)
{
ui->graphicsView->scale(2,2);
}
else
{
ui->graphicsView->scale(0.5,0.5);
}
}
可以使用以下代码禁用滚动:
ui->graphicsView->verticalScrollBar()->blockSignals(true);
ui->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->graphicsView->horizontalScrollBar()->blockSignals(true);
ui->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
您重新实现了包含QGraphicsView的QWidget/QMainWindow的wheelEvent,然而,QGraphicsView的wheelEvent保持不变。
你可以从QGraphicsView派生,重新实现车轮事件的派生类和使用派生类代替QGraphicsView -这样你甚至不需要在你的QWidget/QMainWindow的车轮事件,你可以自定义重新实现车轮事件做你想要的。像这样:
头文件:
class myQGraphicsView : public QGraphicsView
{
public:
myQGraphicsView(QWidget * parent = nullptr);
myQGraphicsView(QGraphicsScene * scene, QWidget * parent = nullptr);
protected:
virtual void wheelEvent(QWheelEvent * event);
};
源文件:myQGraphicsView::myQGraphicsView(QWidget * parent)
: QGraphicsView(parent) {}
myQGraphicsView::myQGraphicsView(QGraphicsScene * scene, QWidget * parent)
: QGraphicsView(scene, parent) {}
void myQGraphicsView::wheelEvent(QWheelEvent * event)
{
// your functionality, for example:
// if ctrl pressed, use original functionality
if (event->modifiers() & Qt::ControlModifier)
{
QGraphicsView::wheelEvent(event);
}
// otherwise, do yours
else
{
if (event->delta() > 0)
{
scale(2, 2);
}
else
{
scale(0.5, 0.5);
}
}
}
我想你的问题有一个更简单的答案…要禁用滚动条,只需设置滚动条策略(QGraphicsView只是QScrollView),所以步骤1)
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
将禁用滚动条…
步骤2)(如果你想保持简单)
QGraphicsView * pView; // pointer to your graphics view
pView->setInteractive(true);
pView->setDragMode(QGraphicsView::ScrollHandDrag);
这是获得你想要的结果的最快方法
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 使用一个考虑到std::map中键值的滚动或换行的键
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 如何在控制台应用程序中添加滚动功能以显示更大的输入
- 如何在QMainWindow中按下Ctrl时禁用滚动功能
- D2D如何实现滚动屏幕功能
- 如何禁用滚轮事件的滚动功能QGraphicsView Qt c++
- 删除鼠标滚轮QGraphics视图上的滚动功能