2010-07-06 32 views
4

變化選擇框位置我在定義爲這樣的網格佈局QCheckbox:的QCheckBox

self.isSubfactorCheckbox = QtGui.QCheckBox('Is &subfactor', self) 

默認情況下,該複選框是對「是子因素」文本的左側。我希望將其移到文本的右側。

我試過玩subcontrol-position但無濟於事。

self.isSubfactorCheckbox.setStyleSheet('QCheckBox::indicator{subcontrol-origin: content; subcontrol-position: top right;}') 

這會將複選框右邊(它仍然是在文本的左邊),但將文本的權利和窗外的邊緣。

這無助於文本移動到右邊:

self.isSubfactorCheckbox.setStyleSheet('QCheckBox::text{subcontrol-origin: content; subcontrol-position: top left; }') 

一種解決方案來創建一個QLabel和添加的複選框上的權利,但我不還沒有找到一種方法來在QLabel中加下劃線字母,以便用戶知道哪個是快捷鍵。我已嘗試在&前加字母或將它們包裝在<u> </u>標籤中。

我仍然更願意只使用QLabel,但是如何將複選框切換到文本右側,而不會將文本推出。

回答

4

使用好友機制。將QCheckBox設置爲QLabel的夥伴。之後,前綴&將在標籤中加下劃線。請參閱QLabel's setBuddy的文檔。

+0

這很好。謝謝! – yoshi 2010-07-06 22:51:46

18

即使容易...

使用QWidget.setLayoutDirection方法,並將其設置從右至左與LeftToRight

您可以在Designer或通過代碼做到這一點,這是一個屬性或所有部件。

+0

這個解決方案的唯一問題是,所有的文本都變得正確。要真正讓它看起來像新的gui的複選框/切換開關,你需要使用QFormLayout和'QFormLayout :: addRow(新的QLabel(「文本」),複選框)''。 – phyatt 2014-08-13 14:11:10