我发现了类似的问题,但没有答案或答案是替代解决方案。
我需要在QComboBoxes和QListWidgets(在PySide中)创建面包屑跟踪,我正在考虑将这些项目的文本设为粗体。但是,我很难找到有关如何实现这一目标的信息。
这就是我所拥有的:
# QComboBox
for server in servers:
if optionValue == 'top secret':
optionValue = server
else:
optionValue = '<b>' + server + '</b>'
self.comboBox_servers.addItem( optionValue, 'data to store for this QCombobox item' )
# QListWidgetItem
for folder in folders:
item = QtGui.QListWidgetItem()
if folder == 'top secret':
item.setText( '<b>' + folder + '</b>' )
else:
item.setText( folder )
iconSequenceFilepath = os.path.join( os.path.dirname(__file__), 'folder.png' )
item.setIcon( QtGui.QIcon(r'' + iconSequenceFilepath + ''))
item.setData( QtCore.Qt.UserRole, 'data to store for this QListWidgetItem' )
self.listWidget_folders.addItem( item )
答案 0 :(得分:3)
您可以使用html / css-like样式,即将文本包装在标签内:
item.setData( QtCore.Qt.UserRole, "<b>{0}</b>".format('data to store for this QListWidgetItem'))
另一个选择是设置font-role:
item.setData(0, QFont("myFontFamily",italic=True), Qt.FontRole)
也许你必须在你的情况下使用QFont.setBold()。但是,使用html-formating可能会更灵活。
对于组合框,使用setItemData():
# use addItem or insertItem (both works)
# the number ("0" in this case referss to the item index)
combo.insertItem(0,"yourtext"))
#set at tooltip
combo.setItemData(0,"a tooltip",Qt.ToolTipRole)
# set the Font Color
combo.setItemData(0,QColor("#FF333D"),Qt.BackgroundColorRole)
#set the font
combo.setItemData(0, QtGui.QFont('Verdana', bold=True), Qt.FontRole)
使用样式表格式不适用于项目文本本身,afaik。