【发布时间】:2011-05-18 06:23:27
【问题描述】:
我正在编写一个图像查看器作为自定义 Qt 小部件(请参阅:https://github.com/dov/Qviv),我现在陷入了如何让我的小部件通知父 QScrollArea 视口中的更改的问题,从而告诉它移动滚动条。例如。如果图像查看器因按键而更改缩放因子,则滚动条需要更改其页面大小。
这样做的一种方法是让小部件显式检查父级是否为 QScrollArea,然后显式调用其方法以在任何更改时通知它。
当然,我还需要将 ScrollArea 的变化连接到图像的内部视图,但这是一个不同的问题。而且我需要削减无限递归,其中小部件报告更改为滚动条报告小部件的更改等。
编辑周三 20:15 (GMT/UTC) 试图向 Vjo 和我自己澄清我需要什么。
我想要实现的是相当于一个 Gtk 小部件,它被分配了一对连接到水平和垂直滚动条的 GtkAdjustment。在我的小部件 GtkImageViewer 中,基于 QvivImageViewer,每当我由于某些内部事件(例如按键)而更改视图时,我都会更新 GtkAdjustment。滚动条与此类更改相关联并相应更新。 GtkImageViewer 还监听 GtkAdjustment 的变化,因此如果用户滚动滚动条,GtkImageViewer 会使用此信息更新并可以更改其视图。我的问题是 Qt 中是否有任何类似于 GtkAdjustment 的东西可以连接到进行更改,并且在这种情况下更新将传播到所有侦听器?
因此我不希望 ScrollArea 成为 QvivImageViewer 的一部分,但如果用户将 QvivImageViewer 放置在 ScrollArea 中,我希望与它进行双向通信,以便滚动条反映小部件的内部状态。
【问题讨论】: