为什么我们不能从文件对话框中加载大文件并在qml中的textArea上显示文件数据?

时间:2019-06-11 07:10:15

标签: python qt qml

我试图通过FileDialog浏览文件,并将文件内容显示到与Python集成的qml的TextArea中。它适用于小尺寸文件,但是当我们浏览大尺寸文件时,TextArea和应用程序会卡住。那么,如何从FileDialog加载大文件并用qml中的文件数据更新TextArea的文本?

在下面的代码中,read()是pyqt插槽,而jsonstring是pyqtproperty:

FileIO {
    id: fileIoObject
}
FileDialog {
   id: fileDialog
   visible: visible
   onAccepted: {
     setOption(DontUseNativeDialogs, true)
     console.log("Accepted: " + fileUrl)
     fileTextArea.text = fileDialog.fileUrl
     fileIoObject.source = fileUrl
     fileIoObject.read()
     }
}
TextArea {
  id: jsonTextArea
  text: fileIoObject.jsonString
}

.py

@pyqtSlot()
    def read(self):
        fileName = self.name.replace('file://', '')
        if (QFile.exists(fileName)):
            file = QFile(fileName)
            if (file.open(QFile.ReadOnly)):
                data = file.readAll()
                codec = QTextCodec.codecForUtfText(data)
                self.setJsonString(codec.toUnicode(data))
                self.jsonStringChanged.emit()
                self.prevJsonStr = self.getJsonString()

我期望解决方案,即如何从FileDialog加载大文件并使用qml中的文件数据更新TextArea的文本。

0 个答案:

没有答案