如何在多个 QT 图形视图小部件之间同步移动

Posted

技术标签:

【中文标题】如何在多个 QT 图形视图小部件之间同步移动【英文标题】:How to synchronize movement between multiple QT graphics view widgets 【发布时间】:2017-03-31 18:25:58 【问题描述】:

我正在尝试构建一个可以并排比较图像的工具。为此,我在 QT 中使用了三个图形视图小部件。它们都以相同的速度缩放,但我似乎在网上找不到任何关于如何链接图像移动的信息(也就是用鼠标拖放)。这个功能甚至可以构建吗?

GUI 如下所示:

图像比较界面

【问题讨论】:

【参考方案1】:

嗯,每次我使用 QGraphicsView 时,我都会将它子类化,因为它没有提供我“公开”所需的一切。

在你的情况下,我相信这很简单:

connect(graphicsView1->verticalScrollBar(), SIGNAL(valueChanged(int)),
        graphicsView2->verticalScrollBar(), SLOT(setValue(int)));
connect(graphicsView2->verticalScrollBar(), SIGNAL(valueChanged(int)),
        graphicsView1->verticalScrollBar(), SLOT(setValue(int)));

如果您愿意,可以调用一些插槽来执行不止一对一的操作:

void MyClass::scrollGraphicsView1(int value)

    graphicsView1->verticalScrollBar()->setValue(value);

void MyClass::scrollGraphicsView2(int value)

    graphicsView2->verticalScrollBar()->setValue(value);

【讨论】:

以上是关于如何在多个 QT 图形视图小部件之间同步移动的主要内容,如果未能解决你的问题,请参考以下文章

Qt 自定义小部件如何通知 ScrollArea 父级视图更改

QT如何摆脱小部件与其父母之间的空间

在 QT 中实现具有多个小部件的视图的最佳方法是啥?

如何制作 Qt 交互式文本编辑小部件

Qt Creator 5.6 如何在一个项目中使用大量(3000+)小部件加速编译

如何同时在不同的 QT 小部件上显示多个视频