更改QCheckBox的复选框位置

Vir*_*liu 4 qt pyqt pyqt4 qcheckbox

我在网格布局中有一个QCheckbox,定义如下:

self.isSubfactorCheckbox = QtGui.QCheckBox('Is &subfactor', self)
Run Code Online (Sandbox Code Playgroud)

默认情况下,该复选框位于"Is subfactor"文本的左侧.我希望将其移至案文右侧.

我试过玩次控制位置,但无济于事.

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

这会将复选框向右移动(它仍然在文本的左侧),但它会将文本向右推出窗口的边缘.

这无助于将文本移到右侧:

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

一个解决方案是创建一个QLabel并在其右侧添加复选框,但我没有找到一种方法来在QLabel中加下划线字母,以便用户知道哪个是快捷键.我已经尝试用字母前缀字母和/或将它们包装在<u> </u>标签中.

我仍然只想使用QLabel,但是如何在没有文本被推出的情况下将复选框切换到文本的右侧.

Eri*_*ser 20

更容易......

使用QWidget.setLayoutDirection方法并将其设置为RightToLeft vs. LeftToRight

您可以在Designer中或通过代码执行此操作,它是属性或所有小部件.

  • 该解决方案的唯一问题是所有文本都右对齐。为了真正让它看起来像较新的 gui 上的复选框/切换开关,您需要将 QFormLayout 与 `QFormLayout::addRow(new QLabel("Text"), checkbox)` 一起使用。 (2认同)