Как скрыть полностью QGridLayout?

Мне следовал за кнопкой a QGridLayout полный виджетов. Я хочу показать/скрыть QGridLayout при каждом нажатии кнопки, но чтении документации QGridLayout Я вижу, что существует нет show()/hide() реализация, также нет setVisible() доступный метод.

Как я достигаю этого?

9
задан Angie Quijano 1 December 2015 в 17:57
поделиться

3 ответа

Вы не упомянули, какую версию Qt вы используете. (Я смотрю документацию по 4.4.)

Я не пробовал, но вот две идеи:

  • QGridLayout наследует функцию QLayoutItem::widget(). Если ваш макет является виджетом, эта функция вернет QWidget*, на котором вы можете вызвать show() или hide().
  • Если ваш QGridLayout не является QWidget, вы можете вложить его в QWidget, и вы можете show() / hide() этот виджет вместо него.
6
ответ дан 4 December 2019 в 13:01
поделиться

Я предполагаю, что у вас несколько QGridLayout , только один должен быть видимым в зависимости от нажатой кнопки. Для этого можно использовать QStackedWidget :

Класс QStackedWidget предоставляет стек виджетов , в котором одновременно виден только один виджет .

Затем для каждого виджета в QStackedWidget вы должны связать отдельный QGridLayout .

См. документацию Qt для получения более подробной информации

3
ответ дан 4 December 2019 в 13:01
поделиться

Макеты влияют только на размер/положение добавленных к ним виджетов - для видимости (и всего остального - обработка событий, фокус, включение/выключение) вам нужен родительский виджет, как упоминалось выше. QLayout::parentWidget() дает вам виджет, которому принадлежит макет, который вы можете показывать и скрывать.

7
ответ дан 4 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: