【发布时间】:2018-10-07 09:06:50
【问题描述】:
首先,我在 Maya 中使用 PySide2,它与 PyQt5 几乎相同。
我正在用一个非常简单的 QTreeWidget 创建一个用户界面。我猜 Maya 的默认样式选择没有显示连接所有树项目的分支线,我想要它们,所以我一直在尝试将它们重新添加(没有成功)。
以下是一些相关代码,显示了我的尝试:
import PySide2.QtCore as QtCore
import PySide2.QtGui as QtGui
import PySide2.QtWidgets as QtWidgets
# I'm defining the stylesheet string outside of my function (which is why it's all caps)
#
STYLESHEET = '''QTreeWidget {border:none;}
QTreeWidget::item {height: 20px;}
QTreeView {
alternate-background-color: rgba(35,35,35,255);
background: rgba(45,45,45,255);}
QTreeView::branch:has-siblings:!adjoins-item {
border-image: url(vline.png) 0;}
QTreeView::branch:has-siblings:adjoins-item {
border-image: url(branch-more.png) 0;}
QTreeView::branch:!has-children:!has-siblings:adjoins-item {
border-image: url(branch-end.png) 0;}
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
image: url(branch-closed.png);}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings {
border-image: none;
image: url(branch-open.png);}'''
# and an excerpt from where I'm creating my QTreeWidget (inside a function)
#
tree_widget = QtWidgets.QTreeWidget()
tree_widget.setFocusPolicy(QtCore.Qt.NoFocus)
tree_widget.setAlternatingRowColors(True)
tree_widget.setStyleSheet(STYLESHEET)
tree_widget.setUniformRowHeights(True)
tree_widget.setItemsExpandable(False)
tree_widget.setHeaderHidden(True)
我还有一个递归函数,它通过嵌套字典将QTreeWidgetItems 添加到树小部件中,如果需要,我可以显示...添加项目后,我使用tree_widget.expandAll() 打开它们。
我从该站点的 QTreeView 部分中获取了所有 QTreeView::branch 样式表项:http://doc.qt.io/qt-5/stylesheet-examples.html,并且由于我的树将始终完全展开,我可能不需要 closed 项或箭头,但是在尝试修改它之前,我试图先获得默认值......
无论如何,没有线(或箭头)被显示...在我将分支项添加到样式表字符串后,Maya 默认样式中的箭头也消失了(这很好,因为我不想要反正他们)。我知道至少有一部分样式表可以正常工作,因为交替的颜色线可以正常工作。
所以我想真正的问题是如何让这些图像显示出来?我认为它们可能以某种方式固有地存储在 PySide2/PyQt5 库中,但我猜不是因为什么都没有显示......我如何明确地告诉样式表图像存储在哪里以便可以使用它们?
谢谢!
【问题讨论】: