2010-03-03 5 views
9

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

Как это достичь?

ответ

6

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

Я не пробовал это, но и здесь есть две идеи:

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

Я использую 4.6.1, и я уже пробовал этот виджет() - метод> скрыть(), но бросил неисправность сегмента. Возможно, у меня что-то не так –

+1

@clinisbut: Вы проверили результат 'widget()', чтобы узнать, действительно ли это? Он может возвращать 'NULL' /' 0'. – Bill

7

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

+0

Итак, вы предлагаете обернуть qlayout в qwidget, чтобы иметь возможность скрывать/показывать(), не так ли? –

+0

Благодарим вас за разъяснения относительно того, как работают макеты. Я не использовал их раньше, поэтому я просто догадываюсь, основываясь на документации. – Bill

3

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

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

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

Смотрите Qt documentation для более подробной информации

Смежные вопросы