2014-09-22 99 views
0

我使用QListWidget實現了一個彈出列表。但是我發現列表的選擇是在鼠標按下某個項目時完成的。但我想要的是點擊選擇。我該如何改變它? (不含委託)如何控制QListWidget選擇

更新:

我有QListWidget的子類。當我按住一個項目上的左鍵時,這個列表的選擇就完成了(發出信號,改變selectedItems(),改變Qss QListWidget :: item:selected {}等等)。我想要的是在項目上釋放鼠標時進行這些更改,而不是按住它。

+1

子類化QListWidget – niyou 2014-09-22 14:25:53

+0

@niyou是的,這就是我所做的。但是我怎樣才能控制選擇行爲。 – 2014-09-22 14:29:45

回答

0

QListWidget具有的功能setSelectionModesetSelectionBehaviour。如果這不是你想要的,請更清楚地解釋你想要達到的目標。

爲了迴應問題的更新,您需要處理小部件的鼠標事件,以防止發生鼠標按下事件時的選擇(不要調用基類函數),然後處理設置選擇你自己,以迴應鼠標釋放事件。

由於QListWidget是一個帶有內部模型的便利類,最好使用QListView,它允許您操作其selection model

如果你決定這樣做,確保有一個很好的理由,因爲用戶期望列表部件以特定的方式工作,並改變這很可能只是騷擾用戶。

+0

Ty您的評論。 Plz看到我的更新。 – 2014-09-22 14:41:04

+0

@MikeShaw,更新回答,作爲迴應。 – TheDarkKnight 2014-09-22 14:44:46

+0

是的,當我停止在事件處理程序中使用默認函數時,會出現很多奇怪的行爲。我將傳遞給QListView。 TY。 – 2014-09-22 15:28:29