Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Передача параметров C++ -> QML
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Quick
crazymonkey
Доброго времени суток.
Сижу разбираюсь с QML.
Вопрос: у меня есть qml файл, в нём рисуется некая табличка из элементов

Раскрывающийся текст

Row {
        id:thist_row
        anchors.top: parent.top
        anchors.topMargin: 2
        spacing: 3
        Model {text:"first"; color:"red"; visiblerow1: false; visiblerow2: false; main_width: 40 }
}


Model это отдельный qml файл.
свойства text color visiblerow объявлены следующим образом:

    property alias visiblerow1: secondblock.visible





в С++ у меня qml отображается просто через QDeclarativeView

Как сделать так что бы параметра text, color, visiblerow1 я мог бы задавать из C++
d2r
Собери нужные параметры в один класс, например

class MyClass: public QObject
{
    Q_OBJECT

public:
    explicit MyClass();
    virtual ~MyClass();

    Q_INVOKABLE QString getText();
    Q_INVOKABLE QString getColor();
    Q_INVOKABLE bool getVisiblerow1();
private:
    QString text;
    QString color;
    bool visiblerow1;
}


методы get...() будут отдавать в QML значения, специально объявляются с макросом Q_INVOKABLE, их ты и будешь вызывать из QML.
потом у твоего экземпляра QmlApplicationViewer вызываешь метод rootContext(), а у полученого объекта setContextProperty("MyClass",m_obj)
как-то так:
  MyClass *m_obj = new MyClass(view);
  qmlApplicationViewer->rootContext()->setContextProperty("MyClass",m_obj);

Первым параметром в setContextProperty("MyClass",m_obj) будет строка с именем этого класса в QML, и далее вызов из QML:
Model {
text: MyClass.getText();
color:MyClass.getColor();
visiblerow1: MyClass.getVisiblerow1();
}


crazymonkey
Спасибо большое, так и сделал, но забыл сюда отписать ;)
Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.