【问题标题】:Change checkbox position for a QCheckBox更改 QCheckBox 的复选框位置
【发布时间】:2011-03-12 12:32:38
【问题描述】:

我在网格布局中有一个 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,但是我如何将复选框切换到文本的右侧,而不会将文本推出。

【问题讨论】:

    标签: qt pyqt pyqt4 qcheckbox


    【解决方案1】:

    更简单...

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

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

    【讨论】:

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

    使用伙伴机制。将 QCheckBox 设置为 QLabel 的好友。在该前缀之后 & 将在标签中的快捷字符下划线。请参阅QLabel's setBuddy 的文档。

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 2014-09-04
      相关资源
      最近更新 更多