Найти - Пользователи
Полная версия: QTreeView как отобразить и управлять деревом?
Начало » GUI » QTreeView как отобразить и управлять деревом?
1
Sergey912
        # Дерево каталогов
tree = QtGui.QTreeView(MainFrame)

model = QtGui.QDirModel()
model.index("d:\users")
tree.setModel(model)
gridlay.addWidget(tree, 2,0,1,1)
Вот такой код, потом он просто на менеджер табл. размещения добавляется, проблема в том, что ничего в дереве не видно, судя по скорости работы он сканировать папку и не думает.
Как QTreeView “включить” чтобы просканировал папку и вывел дерево или QDirModel “включить”?

А вот если так, то явно сканирует, но не отображает:

        # Дерево каталогов
tree = QtGui.QTreeView(MainFrame)

model = QtGui.QDirModel()
tree.setModel(model)
gridlay.addWidget(tree, 2,0,1,1)
model.index("d:\users")
poltergeist
…PythonXY\Lib\site-packages\PyQt4\examples\itemviews\dirview.pyw
Sergey912
А как его на форму поставить? Просто скопировал код из примера, при запуске появляется новое окно и тут же исчезает, он почему-то только в новом окне работает, а мне его нужно на форму определить…
        model = QtGui.QDirModel()
tree = QtGui.QTreeView()
tree.setModel(model)

tree.setWindowTitle(tree.tr("Dir View"))
tree.resize(640, 480)
tree.show()

treelay = QtGui.QHBoxLayout(self)
treelay.addWidget(tree)
gridlay.addLayout(treelay, 2,0,1,1)
При старте новое окно, которое тут же пропадает
Sergey912
У меня все в QMainWindow, в примере вообще ничего подобного нет
Sergey912
Все получилось, я уже сам соображаю туго :)
model = QtGui.QDirModel(MainFrame )
tree = QtGui.QTreeView(MainFrame )
poltergeist
правильно, либо парента указать, либо так:
self.model = QtGui.QDirModel()
self.tree = QtGui.QTreeView()
Sergey912
Отложил его пока, но опять вернулся.
Какие сигналы, кроме,
* void collapsed (const QModelIndex&)
* void expanded (const QModelIndex&)

Еще можно использовать? Он вроде наследник QTreeWidget, но сигналы из последнего для QTreeView не работают, а мне нужно как минимум перехватывать, когда в дереве что-то выбрано, определять папка это или файл.
poltergeist
Наоборот, это QTreeWidget наследник QTreeView. В QTreeView всё сложнее, чем в QTreeWidget, но зато гибкости больше. Глядите в http://doc.trolltech.com/4.5/qitemselectionmodel.html (view.selectionModel())- тут модель выделенных индексов и есть соответствующий сигнал. Получите индексы из неё по сигналу, по ним в QDirModel можно узнать что за элемент селектирован.
Sergey912
>> тут модель выделенных индексов и есть соответствующий сигнал.
Не очень понял, что это за сигнал?

self.selectionModel = QtGui.QItemSelectionModel(DirModel) # DirModel и есть моя модель
self.TreeViev.setSelectionModel(self.selectionModel) # Добавил SelectionModel к моему TreeViev

А с сигналом, ничего не понимаю…
poltergeist
self.connect(self.selectionModel, QtCore.SIGNAL('selectionChanged(const QItemSelection &, const QItemSelection &)'), self.selection_changed)
...
def selection_changed(self, selected, deselected):
sel_indexes = selected.indexes()
if not len(sel_indexes):
return
if DirModel.isDir(sel_indexes[0]):
pass # селектирована директория
.... и так далее
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB