qml установить свойство текста из c ++ - PullRequest
0 голосов
/ 11 декабря 2018

Я создаю быстрое приложение, используя файл qt-creator .qml:

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    MenuBar {
           Menu {
               title: "File"
               MenuItem {  objectName: "buttonTest"
                   text: "Open"
              onTriggered: m.open()}

               MenuItem { text: "show data"
                   onTriggered: m.data()
                  }
               MenuItem { text: "Close"
                   onTriggered: Qt.quit()}
           }

       }


    Text {
            id: name
            text: qsTr("no of vertices :")
        }
    Text
    {

        text: "..........."
        objectName: "textObject"

    }
    }

Я хочу установить свойство text "textObject" из метода в c ++ class Iпопробовал следующий код:

void Mine::data()
{
QQmlApplicationEngine engine;
 QObject *rootObject = engine.rootObjects().first();
   QObject *qmlObject = rootObject->findChild<QObject*>("textObject");

     qmlObject->setProperty("text", "Text from C++");

}

, но он показывает следующую ошибку: ASSERT: "! isEmpty ()" в файле /usr/include/qt5/QtCore/qlist.h, строка 345

любая помощь, пожалуйста?

1 Ответ

0 голосов
/ 11 декабря 2018

В используемом вами движке ничего нет, он буквально создан на месте и ничего не загружен, поэтому список корневых объектов пуст.

Вам нужно обратиться к движку qml.вы на самом деле используете для своего кода QML.Тот, который создан в main.cpp, поэтому вам придется передавать и хранить указатель на него в классах, которые используют его вне main.

Также имейте в виду, что переход с C ++ на QML почти всегда плохдизайн.Это нормально, если вы просто пробуете что-то, но в реальной работе правильной практикой является подключение QML к C ++.

...