如何在多个 QT 图形视图小部件之间同步移动
How to synchronize movement between multiple QT graphics view widgets
我正在尝试构建一个可以并排比较图像的工具。为此,我在 QT 中使用了三个图形视图小部件。它们都以相同的速度缩放,但我似乎无法在网上找到任何关于如何 link 移动图像(又名 - 用鼠标拖放)的信息。这个功能甚至可以构建吗?
这是 GUI 的样子:
图像比较 GUI
好吧,每次我使用 QGraphicsView 时,我都会将它子类化,因为它没有提供我需要的一切 "as public"。
但是对于你的情况,我相信这很简单:
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 中使用了三个图形视图小部件。它们都以相同的速度缩放,但我似乎无法在网上找到任何关于如何 link 移动图像(又名 - 用鼠标拖放)的信息。这个功能甚至可以构建吗?
这是 GUI 的样子:
图像比较 GUI
好吧,每次我使用 QGraphicsView 时,我都会将它子类化,因为它没有提供我需要的一切 "as public"。
但是对于你的情况,我相信这很简单:
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);
}