是否有一种方法可以像QLabel一样包装QCheckBox中的文本?
label = QLabel( QString.fromUtf8('long text in here'))
label.setWordWrap(True)
我尝试了\n
,这可以添加换行符,但如果我调整窗口大小,它并不是动态的。
是否有一种方法可以像QLabel一样包装QCheckBox中的文本?
label = QLabel( QString.fromUtf8('long text in here'))
label.setWordWrap(True)
我尝试了\n
,这可以添加换行符,但如果我调整窗口大小,它并不是动态的。
该问题尚未关闭,因此可能尚未实施此功能。这意味着目前无法将自动换行添加到 QCheckBox。
您可以尝试各种解决方法,例如使用空文本 QCheckBox 和右侧的 QLabel,或尝试将较短的文本放入复选框中,并在其下方放置长说明标签。
QCheckBox
子类中处理resizeEvent
并在那里执行必要的换行来以清晰的方式实现此操作。有关详细信息,请参见我的答案。 - emkey08您可以开发QtDesigner的自定义小部件以图形方式(或不图形)使用此功能。
CheckBoxWordWrap
(在调整大小时动态):
在QtDesigner中:
你也可以使用类并对其进行修改,如果行为不完全符合您的要求。很遗憾,这个问题没有简单的解决方案。我们必须自己实现。
LineWrappedRadioButton
类的完整实现已经在 这个相关答案 中提供。你可以通过从那里继承 QCheckBox
而不是 QRadioButton
来轻松地将这段代码转换成 LineWrappedCheckBox
类。
像这样使用:
int main(int argc, char **argv) {
QApplication app(argc, argv);
LineWrappedCheckBox checkBox("Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.");
checkBox.show();
return app.exec();
}
这将产生以下结果:
class custom_checkbox(QCheckBox):
def __init__(self, text):
super().__init__()
layout = QHBoxLayout()
text_label = QLabel()
text_label.setText(text)
text_label.setWordWrap(True)
layout.addWidget(text_label)
self.setLayout(layout)
self.mouse_inside = False
def enterEvent(self, event):
self.mouse_inside = True
def leaveEvent(self, event):
self.mouse_inside = True
def mousePressEvent(self, event):
if self.mouse_inside:
self.setChecked(not self.isChecked())
checkbox_widget.setStyleSheet(f"""
QCheckBox {{
background-color: {color};
color: white;
padding: 30px;
border-radius: 5px;
border : none
}}
QCheckBox::indicator {{
image: none;
}}
QCheckBox::indicator:checked {{
image: none;
}}
QLabel {{
background-color : {color};
padding: 20px;
font-size: 20px
}}
""")
checkbox_widget.setStyleSheet(f"""
QCheckBox {{
background-color: {color};
color: white;
padding: 30px;
border-radius: 5px;
}}
QCheckBox::indicator {{
subcontrol-position:left;
background-color: {color_for_unchecked_indicator};
border-radius: 4px;
}}
QCheckBox::indicator:checked {{
background-color: {color_for_checked_indicator};
}}
QLabel {{
padding-left: 40px;
}}
""")