我试图通过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的文本。