从 qml qt/quick 中的文本文件读取

从 qml qt/quick 中的文本文件读取

我有一个程序来预览图像,该程序将每个图像的路径(所有图像都在我的计算机中)存储在文本文件中。首先,我打开文本文件并逐行读取图像路径并存储到列表中,然后我将图像源放入列表 [i],(i=0 到图像数量)。它返回给我一些错误,如下所示:

QML Image: Cannot open: qrc:///D:/QtApp/Gui_qml_app/res/1.png%0D
DirectShowPlayerService::doSetUrlSource: Unresolved error code 800c000d

这是我的文本文件:

file:/D:/QtApp/Gui_qml_app/res/1.png
file:/D:/QtApp/Gui_qml_app/res/2.png
file:/C:/Users/info/Desktop/wall_images/3.png

这是我的代码:

           property int i: -1
            var request = new XMLHttpRequest()
            request.open('GET','in.txt')
            request.onreadystatechange = function(event) {
                if (request.readyState == XMLHttpRequest.DONE) {

                 list = request.responseText.split('\n');
                }
            }
            request.send()
    item.source =String(list[i+1])
i++;

大家可以帮助我吗?

答案1

DirectShow错误告诉我们您正在 Windows 上运行,并且大多数情况下,\r\n该平台上都使用换行符进行编码。

在分配项目源路径之前,删除多余的 \r

list[i+1] = list[i+1].replace(/(\r\n|\n|\r)/gm,"");
item.source = String(list[i+1])

答案2

谢谢你的回答。我在下面更改了我的代码,效果很好

    property int i: -1
            var request = new XMLHttpRequest()
            request.open('GET','in.txt')
            request.onreadystatechange = function(event) {
                if (request.readyState == XMLHttpRequest.DONE) {

                 list = request.responseText.split('\n');
                }
            }
            request.send()
    item.source = String(list[i+1]).substring(0,String(list[i+1]).length-1)
i++;

相关内容