Я пишу программу просмотра изображений как пользовательский виджет Qt (см .: https://github.com/dov/Qviv)), и теперь я застрял в вопросе о том, как заставить мой виджет уведомлять родительский QScrollArea об изменениях в порте представления, итаким образом, чтобы сказать ему, чтобы переместить полосы прокрутки. Например, если средство просмотра изображений изменяет коэффициент масштабирования в результате нажатия клавиши, то полосы прокрутки должны изменить свой размер страницы.
Один из способов сделать это будет иметьВиджет явно проверяет, является ли родительский объект QScrollArea, а затем делает явный вызов его методов, чтобы уведомить его о любых изменениях.
Конечно, мне также необходимо подключить изменения ScrollArea к внутреннему представлению изображения., но это другой вопрос. И мне нужно сократить бесконечную рекурсию, когда виджет сообщает об изменениях на полосе прокрутки, которая сообщает об изменениях виджету и т. д.
Редактировать 20:15 среда (GMT / UTC) пытаюсь разъяснить Vjo и себе, что мне нужно.
То, что я пытаюсь достичь, является эквивалентом виджета Gtkему была назначена пара настроек GtkAdjustment, которые подключены к горизонтальной и вертикальной полосе прокрутки.В моем виджете GtkImageViewer, на котором основан QvivImageViewer, всякий раз, когда я меняю представление из-за какого-то внутреннего события (например, нажатия клавиши), я обновляю GtkAdjustment.Полосы прокрутки связаны с такими изменениями и обновляются соответственно.GtkImageViewer также прослушивает изменения GtkAdjustment, и, таким образом, если пользователь прокручивает полосы прокрутки, GtkImageViewer обновляется с этой информацией и может изменить свое представление.Мой вопрос заключается в том, есть ли что-то похожее на GtkAdjustment в Qt, к которому вы можете подключиться для изменений и обновления, и в этом случае обновление будет распространено на всех слушателей?
Таким образом, я не ожидаю, что ScrollAreaбыть частью QvivImageViewer, но если пользователь поместил QvivImageViewer в ScrollArea, я хочу двунаправленную связь с ним, чтобы полосы прокрутки отражали внутреннее состояние виджета.