Форум сайта python.su
# Дерево каталогов
tree = QtGui.QTreeView(MainFrame)
model = QtGui.QDirModel()
model.index("d:\users")
tree.setModel(model)
gridlay.addWidget(tree, 2,0,1,1)
# Дерево каталогов
tree = QtGui.QTreeView(MainFrame)
model = QtGui.QDirModel()
tree.setModel(model)
gridlay.addWidget(tree, 2,0,1,1)
model.index("d:\users")
Отредактировано (Март 24, 2009 11:24:13)
Офлайн
…PythonXY\Lib\site-packages\PyQt4\examples\itemviews\dirview.pyw
Офлайн
А как его на форму поставить? Просто скопировал код из примера, при запуске появляется новое окно и тут же исчезает, он почему-то только в новом окне работает, а мне его нужно на форму определить…
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)
Отредактировано (Март 24, 2009 17:51:21)
Офлайн
У меня все в QMainWindow, в примере вообще ничего подобного нет
Офлайн
Все получилось, я уже сам соображаю туго :)
model = QtGui.QDirModel(MainFrame )
tree = QtGui.QTreeView(MainFrame )
Офлайн
правильно, либо парента указать, либо так:
self.model = QtGui.QDirModel()
self.tree = QtGui.QTreeView()
Офлайн
Отложил его пока, но опять вернулся.
Какие сигналы, кроме,
* void collapsed (const QModelIndex&)
* void expanded (const QModelIndex&)
Еще можно использовать? Он вроде наследник QTreeWidget, но сигналы из последнего для QTreeView не работают, а мне нужно как минимум перехватывать, когда в дереве что-то выбрано, определять папка это или файл.
Офлайн
Наоборот, это QTreeWidget наследник QTreeView. В QTreeView всё сложнее, чем в QTreeWidget, но зато гибкости больше. Глядите в http://doc.trolltech.com/4.5/qitemselectionmodel.html (view.selectionModel())- тут модель выделенных индексов и есть соответствующий сигнал. Получите индексы из неё по сигналу, по ним в QDirModel можно узнать что за элемент селектирован.
Офлайн
>> тут модель выделенных индексов и есть соответствующий сигнал.
Не очень понял, что это за сигнал?
self.selectionModel = QtGui.QItemSelectionModel(DirModel) # DirModel и есть моя модель
self.TreeViev.setSelectionModel(self.selectionModel) # Добавил SelectionModel к моему TreeViev
А с сигналом, ничего не понимаю…
Отредактировано (Март 30, 2009 17:11:22)
Офлайн
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 # селектирована директория
.... и так далее
Отредактировано (Март 30, 2009 22:31:25)
Офлайн