获取用户从qml到c ++的输入

时间:2018-05-30 16:03:20

标签: c++ qt qml

我正在尝试将用户输入从 qml TextField 转移到 c ++ ,但只有在文本属性值被硬编码时才能使用 >(const值)

C ++

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

QObject *rootObject = engine.rootObjects().first();
QObject *serverField1 = rootObject->findChild<QObject*>("serverField1");

qDebug() << serverField1->property("text"); //Here I expect to get user input

设为Qml

ApplicationWindow {
    id: applicationWindow
    visible: true
    width: 300
    height: 550

    TextField {
        id: serverField1
        objectName: "serverField1"
        width: 200
        height: 110
//    text: "hardcoded value" //If text is const value, qDebug will get data from this property
    }
}

1 个答案:

答案 0 :(得分:0)

当您显示窗口时,您要求显示session.run()的文本,因此您将获得的是您最初设置的文本,您应该做的就是每次更改时都会获得该文本。我认为你有一些类会处理那些数据的处理,该类将被称为run_values,它必须从TextField继承,以便它可以有一个qproperty并嵌入该类的对象通过Backend进行QML,因此每次更改QObject中的文字时,也会更改setContextProperty类对象中的文字。

<强>的main.cpp

QML

<强> main.qml

Backend

<子> 您可以在以下link中找到完整的代码。