Функция QTreeView rootIsDecorated не работает - PullRequest
0 голосов
/ 17 октября 2018

Я новичок в QT, но пытаюсь изменить древовидную модель, чтобы она запускалась с раскрывающимся списком при загрузке окна.Поэтому я хочу изменить это от этого:

enter image description here

На это:

enter image description here

Это мой код: я также хотел бы изменить размер без установки фиксированного, минимального или максимального значения, но изменение размера и setGeometry не работают!Пожалуйста, помогите

    self.tree_model = QComponentTreeModel(self.model)
    self.tree_view = QComponentTreeView()
    self.tree_view.setRootIsDecorated(False)
    self.tree_view.setModel(self.tree_model)
    self.tree_view.show()
    self.tree_view.clicked.connect(self.componentSelected)
    self.currentComponentChanged.connect(
        self.tree_view.currentComponentChanged)
    self.tree_view.setMinimumWidth(400)
    self.tree_view.setMinimumHeight(300)

1 Ответ

0 голосов
/ 17 октября 2018

Ваш вопрос не совсем понятен.

Из заголовка («Функция QTreeView rootIsDecorated не работает») кажется, что вам нужно скрыть элементы управления, чтобы развернуть / свернуть дочерние элементы для ROOT кака также все элементы модели под ним.Вы ожидаете, что rootIsDecorated собственность позаботится об этом, и она не будет работать так, как вы ожидаете.Однако, насколько я вижу, свойство rootIsDecorated работает точно так же, как оно задокументировано для работы:

Это свойство содержит, показывать ли элементы управления для разворачивания и свертывания элементы верхнего уровня

Элементы с дочерними элементами обычно отображаются с элементами управления, чтобы развернуть и свернуть их, позволяя показывать или скрывать своих дочерних элементов.Если это свойство имеет значение false, эти элементы управления не отображаются для элементов верхнего уровня .Это можно использовать для того, чтобы древовидная структура одного уровня выглядела как простой список элементов.

Единственный элемент верхнего уровня в вашем примере - ROOT.Нет никакого контроля, чтобы развернуть / свернуть его дочерние элементы - это свойство rootIsDecorated, работающее так, как оно предназначено для работы.Он не предназначен для того, чтобы что-то делать с элементами управления для элементов не верхнего уровня, то есть для детей с ROOT в вашем примере.

Совершенно другой вопрос возникает из первого предложения в описании вопроса:

пытается изменить древовидную модель, чтобы она открывалась при загрузке окна

Так что, вероятно, вы захотите расширить элемент ROOT, как только представление с модельюподключен к нему отображается?Это совершенно другое, чем свойство rootIsDecorated.Чтобы развернуть элемент, нужно вызвать метод expand из QTreeView с соответствующим модельным индексом.Например, предположим, что ваша модель имеет метод rootItemIndex, который возвращает QModelIndex, соответствующий элементу с именем ROOT.Затем вам нужно сделать следующее в своем коде, чтобы расширить этот элемент:

self.tree_view.setModel(self.tree_model)
self.tree_view.expand(self.tree_model.rootItemIndex())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...