首页 > 解决方案 > 为什么我们不能从文件对话框加载大尺寸文件并在 qml 中的 textArea 上显示文件数据?

问题描述

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

标签: pythonqtqml

解决方案


推荐阅读