Невозможно назначить QList <QUrl>для QString - PullRequest
2 голосов
/ 13 января 2020

Я сталкиваюсь с этой ошибкой:

Unable to assign QList<QUrl> to QString

при попытке напрямую присвоить результат drop.urls (полученный из обработчика DropArea 'onDropped) для свойство Label text в Python.

Исходя из , это делает c, я попытался Qt.resolvedUrl (преобразовать тип в строку), как показано ниже код. Однако это приводит к пустой текстовой метке. URL, с которыми я работаю, начинаются с " file: /// ".

Что я делаю не так?

import QtQuick.Window 2.2
import QtQuick 2.2
import QtQuick.Controls 2.14

Window {
    id: root
    visible: true
    width: 640
    height: 480
    title: "Drop Test"
    property var attachments: "empty"

    DropArea {
        id: dropArea;
        anchors.fill: parent
        onEntered: {
            root.color = "gray";
            console.log("You entered drop area")
            drag.accept (Qt.LinkAction);
        }
        onDropped: {
            console.log("You dropped " + drop.urls)
            attachments = Qt.resolvedUrl(drop.urls)
        }
    }

    Label {
        id: mLableId
        text: attachments
    }
}

Назначение URL-адреса для строки кажется таким очевидным вопросом, но если он уже задавался в контексте Python и Qt Быстро, после вчерашнего поиска я не нашел таких существующих вопросов.

1 Ответ

2 голосов
/ 13 января 2020

urls - это список URL, поэтому вам нужно будет выполнить итерацию и объединение:

onDropped: {
    console.log("You dropped " + drop.urls)
    var str = ""
    for(var i in drop.urls){
        var url = drop.urls[i]
        str += Qt.resolvedUrl(url)
    }
    attachments = str
}
...