2015-10-16 142 views
0

您好同胞開發者!QCombobox - 隱藏下拉下的第一項

我想實現一個「動作」QCombobox,其中不同選項觸發一個動作而不是選擇一個選項。組合框表示類似於「添加屬性」的內容,並且當用戶點擊它時,他獲得了可供選擇的不同屬性。如果用戶點擊其中的一個,它將被添加到-whateverdoesntmatter-。組合框切換回它的原始狀態。

問題是,第一項「添加屬性」顯示在組合框的下拉列表中,導致用戶有點混淆,因爲它不是一個真正的動作。

正常狀態:

[Add Property] 

下拉狀態:

[Add Property] 
Add Property 
Length 
Width 
etc ... 

因此,我想盡快隱藏第一個選項作爲組合框下降到實現這一行爲:

[Add Property] 
Length 
Width 
etc ... 

我已經嘗試了繼承組合框並覆蓋showPopUp()和hidePopUp() - 但我無法弄清楚如何獲得我的預期行爲。

想法?謝謝!

+0

您需要使用ComboBox的模型。 –

+2

首先,你真的*需要一個'QComboBox'嗎?使用具有下拉工具按鈕的'QToolBar'可能會更好/更容易。或者只是一個'QToolButton'與一個'QMenu'關聯。 – Kamajii

+0

@SaZ我在覆蓋showPopUp()和hidePopUp()時試圖做到這一點,但也許我錯過了一些東西......我試圖「拿走」第一個QabstractItem,並在隱藏時重新添加它。也許我錯過了一些模型功能。 – CppChris

回答

1

如果沒有絕對需要一個QComboBox你可能會更好/更容易使用過與相關的QMenu一個QToolButton,然後設置按鈕的popupMode到一個適當的值。

你甚至可以使用QToolBar。只需添加一個QAction與您想要的標籤(如添加屬性),通過QAction::setMenu將菜單關聯到它,並將其關聯到工具欄。工具欄將自動創建工具按鈕。

要訪問popupMode屬性,您可以使用QToolBar::widgetForAction並將其轉換爲QToolButton