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

2024-09-29 21:32:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过FileDialog浏览一个文件,并将文件的内容显示到qml的TextArea中,并与python集成。它适用于小文件,但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的文本。你知道吗


Tags: 文件数据文本selfidreaddatafilename

热门问题