Qml доступ к QVariant из QPair / std::pair
Добрый день.
Qt 6.3.2
Есть код, который добавляет в Qml объект из C++ кода:
QQmlApplicationEngine engine;
QQmlContext* context = engine.rootContext();
QList<QPair<QString, QString>> titlesTexts;
titlesTexts.append(qMakePair("title 0", "text 0"));
titlesTexts.append(qMakePair("title 1", "text 1"));
titlesTexts.append(qMakePair("title 2", "text 2"));
titlesTexts.append(qMakePair("title 3", "text 3"));
titlesTexts.append(qMakePair("title 4", "text 4"));
context->setContextProperty("titlesTexts", QVariant::fromValue(titlesTexts));
Далее в коде Qml пытаюсь прочитать данный список:
import QtQuick
Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
    Component.onCompleted: {
        console.log("Program was caled")
        for (var key in titlesTexts) {
            var item = titlesTexts[key]
            console.log(item)
            console.log(item.first, item.second)
        }
    }
}
При этом получаю вывод:
qml: Program was caled
qml: QVariant(std::pair<QString,QString>, std::pair("title 0","text 0"))
qml: undefined undefined
qml: QVariant(std::pair<QString,QString>, std::pair("title 1","text 1"))
qml: undefined undefined
qml: QVariant(std::pair<QString,QString>, std::pair("title 2","text 2"))
qml: undefined undefined
qml: QVariant(std::pair<QString,QString>, std::pair("title 3","text 3"))
qml: undefined undefined
qml: QVariant(std::pair<QString,QString>, std::pair("title 4","text 4"))
qml: undefined undefined
Как бы получить доступ к элементам внутри пар?
Решено
Спасибо 
aol
Ссылки с информацией:
https://forum.qt.io/topic/87558/qlist-of-qpair-in-qml
Нужно поменять qml код так:
import QtQuick
Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
    Component.onCompleted: {
        for (var key in titlesTexts) {
            var item = titlesTexts[key]
            console.log(item.title, item.text)
        }
    }
}
Код С++:
QQmlApplicationEngine engine;
QQmlContext* context = engine.rootContext();
QVariantList titlesTexts;
titlesTexts.append(QVariant::fromValue(QVariantMap({{"title", "title 0"}, {"text", "text 0"}})));
titlesTexts.append(QVariant::fromValue(QVariantMap({{"title", "title 1"}, {"text", "text 1"}})));
titlesTexts.append(QVariant::fromValue(QVariantMap({{"title", "title 2"}, {"text", "text 2"}})));
titlesTexts.append(QVariant::fromValue(QVariantMap({{"title", "title 3"}, {"text", "text 3"}})));
titlesTexts.append(QVariant::fromValue(QVariantMap({{"title", "title 4"}, {"text", "text 4"}})));
context->setContextProperty("titlesTexts", QVariant::fromValue(titlesTexts));
