![](/img/trans.png)
[英]Drag items between QTreeWidget and QListWidget in PyQt5?
[英]formatting child items in qtreewidget pyqt5
STYLESHEET = '''QTreeWidget {border:None}
QTreeWidget::Item {height: 80px;
border-bottom:2px solid black;
color: rgba(255,255,255,255);} /* +++ */
QTreeView {
alternate-background-color: rgba(170,170,170,255);
background: rgba(211,211,211,255);}'''
self.treeWidget = QTreeWidget()
self.treeWidget.setAlternatingRowColors(True)
self.treeWidget.setStyleSheet(STYLESHEET)
在這里,我在STYLESHEET中將高度設置為80px。 但我想將高度設置為40px(用於子項)和80px(用於toplevelitem)。 我怎么做? 提前致謝
Qt樣式表是通用的,在QTreeWidget的情況下,沒有選擇器可以區分父母和孩子,因此另一個選擇是使用委托,如下所示:
from PyQt5 import QtCore, QtWidgets
STYLESHEET = '''QTreeWidget {border:None}
QTreeWidget::Item{
border-bottom:2px solid black;
color: rgba(255,255,255,255);
}
QTreeView{
alternate-background-color: rgba(170,170,170,255);
background: rgba(211,211,211,255);
}'''
class StyledItemDelegate(QtWidgets.QStyledItemDelegate):
def sizeHint(self, option, index):
s = super(StyledItemDelegate, self).sizeHint(option, index)
if index.parent().isValid():
s.setHeight(40)
else:
s.setHeight(80)
return s
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.treeWidget = QtWidgets.QTreeWidget()
delegate = StyledItemDelegate(self.treeWidget)
self.treeWidget.setItemDelegate(delegate)
self.treeWidget.setAlternatingRowColors(True)
self.treeWidget.setStyleSheet(STYLESHEET)
lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(self.treeWidget)
for i in range(5):
it = QtWidgets.QTreeWidgetItem(["parent {}".format(i)])
self.treeWidget.addTopLevelItem(it)
for j in range(5):
child = QtWidgets.QTreeWidgetItem(["children {}{}".format(i, j)])
it.addChild(child)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.