QT QStackedLayout проблема - PullRequest
       2

QT QStackedLayout проблема

0 голосов
/ 27 июля 2011

Я хотел бы спросить о QStackedLayout.Теперь у меня есть несколько виджетов, добавленных в QStackedLayout, и я хочу сделать что-то вроде этого: Когда пользователь переключается на страницу X, обновите страницу X.

Как я могу это сделать?У меня есть специальный код, который я хочу запустить, когда он обновляется. Большое спасибо

Ответы [ 3 ]

2 голосов
/ 27 июля 2011

Все "страницы" являются классами на основе QWidget.Если ваши виджеты не отображаются должным образом, вам нужно проверить код вашего виджета.Вообще, при переключении страниц видимый виджет перерисовывается сам.Если ваши виджеты не обрабатывают некоторые события, вы можете увидеть глюки.

В любом случае, если вы хотите принудительно перерисовать для своей «страницы», вам нужно вызвать QWidget::update() или (метод bruteforce)) QWidget::repaint().

1 голос
/ 19 августа 2011

На мой взгляд, лучший способ справиться с этой ситуацией - через наследование.Создайте класс, производный от QWidget, который имеет функцию виртуального обновления.Используйте это как базовый класс для каждой страницы вашего сложенного виджета.В вашем классе, который содержит составной виджет, подключите слот к сигналу currentChanged(int index) составного виджета.В этом слоте получите текущий виджет qobject_cast в базовом типе и (в случае успеха) вызовите для него функцию обновления.

Каждый класс, который является страницей в вашемсоставной виджет должен затем переопределить функцию обновления и использовать ее для обновления своей информации по мере необходимости.

1 голос
/ 28 июля 2011

Исходя из вашего комментария к моему, похоже, что вы ищете сигнал, который генерируется при изменении текущей страницы, чтобы вы могли обновить базовые данные для экрана. В этом случае вы захотите подключить слот до void QStackedWidget :: currentChanged (int index)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...