2015-11-25 77 views
1

我试图让QTreeView允许用户编辑QFileSystemModel中的文件名。然而Qt只是打印:QFileSystems无法编辑QTreeView中的项目

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)