gpt4 book ai didi

qt - 在 QTreeView 中设置粗体行

转载 作者:行者123 更新时间:2023-12-03 03:00:46 25 4
gpt4 key购买 nike

我在 pyqt 应用程序中有一个 QTreeView 的自定义子类。我试图让用户能够突出显示和“低亮”(由于缺乏更好的术语)行。突出显示的行应具有粗体文本和(可选)不同的背景颜色。有什么想法吗?
我正在考虑将样式表作为一种选择,但到目前为止还无法使其发挥作用。如果我设置 QTreeView 的样式表:

self.setStyleSheet("QTreeView::item:selected {border: 1px solid #567dbc;}")

我不知道如何手动启用“状态”,仅将所需的行保留在特定状态。如果我尝试设置单个项目的样式表:

#modelIndex is a valid QModelIndex
modelIndex.internalPointer().setStyleSheet()

我遇到了段错误。
我不相信样式表是正确的选择,我对所有想法持开放态度。谢谢!

最佳答案

从你所说的看来,最简单的解决方案是定义 custom item delegate对于您的 TreeView ,并在需要时将项目字体粗细设置为粗体。请检查下面的示例是否适合您,它应该创建一个带有自定义项目委托(delegate)的 TreeView ,这将更改项目的字体样式。

import sys
from PyQt4 import QtGui, QtCore

class BoldDelegate(QtGui.QStyledItemDelegate):
def paint(self, painter, option, index):
# decide here if item should be bold and set font weight to bold if needed
option.font.setWeight(QtGui.QFont.Bold)
QtGui.QStyledItemDelegate.paint(self, painter, option, index)


class MainForm(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)

model = QtGui.QStandardItemModel()

for k in range(0, 4):
parentItem = model.invisibleRootItem()
for i in range(0, 4):
item = QtGui.QStandardItem(QtCore.QString("item %0 %1").arg(k).arg(i))
parentItem.appendRow(item)
parentItem = item

self.view = QtGui.QTreeView()
self.view.setModel(model)
self.view.setItemDelegate(BoldDelegate(self))

self.setCentralWidget(self.view)

def main():
app = QtGui.QApplication(sys.argv)
form = MainForm()
form.show()
app.exec_()

if __name__ == '__main__':
main()

希望这有帮助,问候

关于qt - 在 QTreeView 中设置粗体行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com