我有一個按鈕後面跟着一個QGridLayout
裝滿了小部件。 我想在每個按鈕點擊時顯示/隱藏QGridLayout
,但閱讀QGridLayout
文檔我看沒有show()
/hide()
實現,也沒有setVisible()
方法可用。如何完全隱藏QGridLayout?
我該如何做到這一點?
我有一個按鈕後面跟着一個QGridLayout
裝滿了小部件。 我想在每個按鈕點擊時顯示/隱藏QGridLayout
,但閱讀QGridLayout
文檔我看沒有show()
/hide()
實現,也沒有setVisible()
方法可用。如何完全隱藏QGridLayout?
我該如何做到這一點?
你沒有提到你使用的是哪個版本的Qt。 (我看4.4 documentation)
我沒有試過,但這裏有兩個想法:
QGridLayout
繼承功能QLayoutItem::widget()
。如果你的佈局是一個小部件,這將返回一個QWidget*
,你可以撥打show()
或hide()
。QGridLayout
不是QWidget
,則可以將其嵌套在QWidget
之內,並且您可以使用該小部件代替。佈局僅影響添加到其中的小部件的大小/位置 - 對於可見性(以及其他任何事件處理,焦點,啓用+禁用),您關心父小部件,如上所述。 QLayout :: parentWidget()爲您提供擁有佈局的小部件,然後您可以顯示和隱藏它。
所以你建議將qlayout包裝在qwidget中以便能夠隱藏/顯示()不是嗎? – 2010-03-03 15:09:05
感謝您瞭解Layouts如何工作的說明。我之前沒有用過它們,所以我只是根據文檔猜測。 – Bill 2010-03-03 15:50:57
我假設你有多個QGridLayout
實例,根據點擊的按鈕只能看到一個實例。您可以使用此一QStackedWidget
:
的QStackedWidget類提供了一個 堆部件的只有一個小部件 可見在同一時間。
然後,對於QStackedWidget
中的每個小工具,您應該關聯一個單獨的QGridLayout
。
更多細節
我使用4.6.1見Qt documentation,我已經嘗試過,窗口小部件() - >隱藏()方法,但扔段故障。也許我錯了 – 2010-03-03 14:11:49
@clinisbut:你測試了widget()的結果來看它是否有效嗎?它可能會返回'NULL' /'0'。 – Bill 2010-03-03 14:57:27