Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C+中从QString传递文本字段文本+;? ,我需要使用TeXFieldQML的文本,然后在C++中传递到QString。< /强> _C++_Qt_Qml - Fatal编程技术网

如何在C+中从QString传递文本字段文本+;? ,我需要使用TeXFieldQML的文本,然后在C++中传递到QString。< /强>

如何在C+中从QString传递文本字段文本+;? ,我需要使用TeXFieldQML的文本,然后在C++中传递到QString。< /强> ,c++,qt,qml,C++,Qt,Qml,Firstpage.qml: Component { id: mainView Row { Image { id: logo anchors.fill: parent source: "Imagens/jscalcadosLogo.png" } ColumnLayout { id: layoutLogin

Firstpage.qml:

Component {

    id: mainView

    Row {

        Image {
            id: logo
            anchors.fill: parent
            source: "Imagens/jscalcadosLogo.png"
        }

        ColumnLayout {
            id: layoutLogin
            anchors.centerIn: parent
            anchors.margins: 3
            spacing: 3

            TextField {
                id: login
                objectName: "login"
                Layout.fillWidth: true
                placeholderText: "Username"

            }
Main.cpp:

int main(int argc, char *argv[]){

QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

QQuickView *view = new QQuickView;
view->setSource(QUrl::fromLocalFile("FirstPage.qml"));
QObject *object = view->rootObject();
QObject    *textin = object->findChild<QObject*>("login");
//QString input = textin->Property("text").toString(); // crash the program

return app.exec();
}
intmain(intargc,char*argv[]){
QGUI应用程序应用程序(argc、argv);
qqmlaplicationengine;
engine.load(QUrl(QStringLiteral(“qrc:/main.qml”));
QQuickView*视图=新的QQuickView;
查看->设置源(QUrl::fromLocalFile(“FirstPage.qml”);
QObject*object=view->rootObject();
QObject*textin=object->findChild(“登录”);
//QString input=textin->Property(“text”).toString();//使程序崩溃
返回app.exec();
}
当我尝试将Textin转换为QString时,程序崩溃


有什么想法吗?很抱歉我的英语不好。

一般规则是:不要读或写来自C的QML语言++

相反,您将创建C++中的<代码> qObjult<代码>派生实例,该实例具有该文本的属性。通过将该

QObject
设置为上下文属性或将其注册为单例,可以将其公开给QML

然后在qML中设置上述属性-VoILA -你已经把文本从QML世界推到C++。 关于ScCopFube关于C++和QML的交互存在各种各样的问题(我可以稍后再搜索它们,并且可能把你的问题标记为重复的,因为我确信你的问题不是第一个问题)。
还有关于这方面的更多信息。

一般规则是:不要从C读取或写入QML中的内容++

相反,您将创建C++中的<代码> qObjult<代码>派生实例,该实例具有该文本的属性。通过将该

QObject
设置为上下文属性或将其注册为单例,可以将其公开给QML

然后在qML中设置上述属性-VoILA -你已经把文本从QML世界推到C++。 关于ScCopFube关于C++和QML的交互存在各种各样的问题(我可以稍后再搜索它们,并且可能把你的问题标记为重复的,因为我确信你的问题不是第一个问题)。
<>也有更多的信息。

“一般规则是:不要在C++中从QML读或写东西”,但是我需要使用这个连接,因为我尝试用C++中的MySQL来连接我的QML应用程序,而“文档”不清楚。我需要将此QObject传递给QString,知道吗?@Césaraugust创建一个从QObject继承的类,在该类中,您的方法负责执行所需的过程,在您的情况下,与数据库交互,并使用上下文属性或单例将其公开给QML,然后在QML侧使用该任务,执行C++侧的代码。“一般规则是:不要在C++中读取或写入QML中的东西”,但我需要使用这个连接,因为我尝试使用C++中的MySQL来连接QML应用程序,而“文档”不清楚。我需要将此QObject传递给QString,知道吗?@Césaraugust创建一个从QObject继承的类,在该类中,您的方法负责执行所需的过程,在您的情况下,与数据库交互,并使用上下文属性或单例将其公开给QML,然后在QML端使用该任务,执行在C++端实现的代码。