QTableView使用的PySide QFileSystemModel运行缓慢

时间:2014-11-14 12:25:36

标签: python qt pyside

我在新应用中使用小部件来提供当前目录中的文件列表。它工作正常但启动操作非常慢,每当在目录树中向上或向下移动时,新目录的更新和显示也会很慢。

以下是用于应用程序的文件资源管理器部分的类;

class FileList(QFrame):
  def __init__(self, parent=None):
    super(FileList, self).__init__(parent)
    # self.setFrameStyle(self.WinPanel|self.Raised)
    lo50 = QVBoxLayout(self)
    lo50.setContentsMargins(0, 0, 0, 0)
    self.setLayout(lo50)
    self.cwdtext = QLineEdit(self)
    self.cwdtext.setReadOnly(True)

    lo50.addWidget(self.cwdtext)

    self.list = QTableView(self)
    self.list.setSortingEnabled(True)
    self.list.setShowGrid(False)
    self.list.setWordWrap(False)
    self.list.setCornerButtonEnabled(False)
    vh = self.list.verticalHeader()
    vh.hide()
    vh.setDefaultSectionSize(20)

    self.filemodel = QFileSystemModel(self)
    self.filemodel.setFilter(QDir.AllDirs | QDir.Files | QDir.NoDot | QDir.Drives | QDir.AllEntries)
    self.filemodel.setNameFilterDisables(False)

    self.list.setModel(self.filemodel)

    lo50.addWidget(self.list)
    self.chdir(QDir.currentPath())
    self.list.doubleClicked.connect(self.doubleclick)

def chdir(self, directory):
    newdir = obj2str(directory)
    i = self.filemodel.setRootPath(newdir)
    self.list.setRootIndex(i)
    cwd = os.path.abspath(newdir)
    os.chdir(cwd)
    self.cwdtext.setText(cwd)
    return i

def doubleclick(self, index):
    if self.filemodel.isDir(index):
        self.chdir(self.filemodel.filePath(index))
    else:
        print(self.filemodel.filePath(index))

1 个答案:

答案 0 :(得分:0)

我认为这取决于PySide和QFileSystemModel本身。

我正在使用带有QtCore 4.8.6的PySide 1.2.1版本,我今天发现它可以正常工作一小时而不会对这个代码区域进行任何更改,然后再次恢复为慢速操作。我想我可能会为视图创建自己的简单模型或尝试PyQt4。