Для начала я использую PySide2 в Maya, которая почти такая же, как 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::branch
из раздела QTreeView на этом сайте: http://doc.qt.io/qt-5/stylesheet-examples.html и, поскольку мое дерево всегда будет полностью раскрыто, мне, вероятно, не нужны элементы closed
или стрелки, но я пытался просто получить значения по умолчанию, прежде чем пытаться изменить его ...
В любом случае, строки (или стрелки) не отображаются ... После того, как я добавил элементы ветви в строку таблицы стилей, стрелки, которые были там из стиля по умолчанию Maya, также исчезли (что хорошо, потому что я не хотел их в любом случае). Я знаю, что, по крайней мере, часть таблицы стилей работает, так как вспомогательные цветные линии работают правильно.
Так что, я думаю, реальный вопрос в том, как мне заставить эти изображения показываться? Я думал, что они могут каким-то образом храниться в библиотеках PySide2 / PyQt5, но я предполагаю, что нет, поскольку ничего не показывается ... Как я могу явно указать таблице стилей, где хранятся изображения, чтобы их можно было использовать?
Спасибо!