2015-11-25 3 views
1

Я пытаюсь получить QTreeView, чтобы разрешить пользователю редактировать имена файлов из QFileSystemModel. Однако Qt просто печатает:Невозможно отредактировать элементы в QTreeView с QFileSystems

edit: editing failed 

Я получаю тот же результат с PySide и PyQt.

Открытие редактора с помощью openPersistenEditor() работает, но я бы предпочел использовать механизм сборки.

import sys 
from PyQt4.QtGui import QTreeView, QFileSystemModel, QApplication 


class TestView(QTreeView): 
    def __init__(self, directory, *args, **kwargs): 
     super(TestView, self).__init__(*args, **kwargs) 

     self.file_system_model = QFileSystemModel() 

     self.file_system_model.setRootPath(directory) 
     index = self.file_system_model.index(directory) 
     self.setModel(self.file_system_model) 
     self.setRootIndex(index) 
     self.activated.connect(self._on_edit) 

    def _on_edit(self, index): 
     # self.closePersistentEditor(index) 
     # app.processEvents() 
     self.edit(self.currentIndex()) 
     # self.openPersistentEditor(index) 


if __name__ == '__main__': 
    app = QApplication([]) 
    directory = r'c:/' 
    dialog = TestView(directory) 

    dialog.show() 
    sys.exit(app.exec_()) 

ответ

1

Модель предназначена только для чтения по умолчанию, так что вам нужно добавить:

self.file_system_model.setReadOnly(False) 
Смежные вопросы