Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.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++ QML中的插槽/信号与main.QML之外的另一页_C++_Qt_Qml - Fatal编程技术网

C++ QML中的插槽/信号与main.QML之外的另一页

C++ QML中的插槽/信号与main.QML之外的另一页,c++,qt,qml,C++,Qt,Qml,我正在做一个程序,我需要用户填写一些信息。我有带菜单的main.qml,还有我的页面SubPage.qml,用户可以在其中访问表单以填写表单 现在表格已经填好了,我想把信息发送到main.cpp进行处理。 我所有的尝试都失败了 这是我的main.cpp #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQmlComponent> #include <QQuickV

我正在做一个程序,我需要用户填写一些信息。我有带菜单的main.qml,还有我的页面SubPage.qml,用户可以在其中访问表单以填写表单

现在表格已经填好了,我想把信息发送到main.cpp进行处理。 我所有的尝试都失败了

这是我的main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlComponent>
#include <QQuickView>
#include <QtQml>
#include <QDebug>
#include "generalsettings.h"

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

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

    QQmlApplicationEngine engine2;

    GeneralSettings generalSettings1;
    QQmlComponent component(&engine2, QUrl((QStringLiteral("qrc:/SubPage.qml"))));

    QObject *element = engine.rootObjects().value(0);
    //QQuickWindow *window = qobject_cast<QQuickWindow *>(element);

    QObject::connect(component, SIGNAL(saveGeneralSettings(QString)),
                       &generalSettings1, SLOT(registerGeneralSettings(QString)));

    return app.exec();
}

感谢您的帮助

几个
qqqmlapplicationengine
实例的含义是什么?如果你想连接2个QML文件,为什么你需要通过C++而不是直接这样做?我的应用程序需要在最后生成一个XML文件,所有的数据都是由用户编写的。这个XML文件将用C++生成。我使用了2个QQML应用程序引擎,因为教程和文档,我看到它是从C++传递数据的唯一方法。我需要加载main.qml以允许用户选择他想要选择的菜单,但我还需要SubPage.qml以发回收集的信息。更清楚吗?从QML访问C++部分,反之亦然,非常简单,不需要创建2个引擎。看看这一页,你会有一些想法。我猜你在发布一些代码后会得到正确答案,但是在所有这些例子中,总是有一个页面与QC++交互,可以有2个QC++页面与C++交互吗?当然,你可以有你想要的页面。连接到单引擎,所有的都可以与C++交互,没有问题。几条代码> QQmlApplicationEngine < /COD>实例的意义是什么?如果你想连接2个QML文件,为什么你需要通过C++而不是直接这样做?我的应用程序需要在最后生成一个XML文件,所有的数据都是由用户编写的。这个XML文件将用C++生成。我使用了2个QQML应用程序引擎,因为教程和文档,我看到它是从C++传递数据的唯一方法。我需要加载main.qml以允许用户选择他想要选择的菜单,但我还需要SubPage.qml以发回收集的信息。更清楚吗?从QML访问C++部分,反之亦然,非常简单,不需要创建2个引擎。看看这一页,你会有一些想法。我猜你在发布一些代码后会得到正确答案,但是在所有这些例子中,总是有一个页面与QC++交互,可以有2个QML页面与C++交互吗?当然,你可以有多个页面,连接到单个引擎,所有的都可以与C++交互,没有问题。
 Button{
     id:buttonRight
     text:"Right"
     anchors.margins: 10
     x:visualConditionsContainer.x + maxCardWidth/2 - buttonRight.width + visualConditionsContainer.width/2
     y:maxCardHeight +visualConditionsContainer.y +40
     onClicked:{
        if(datePickerContainer.x != pageGeneralSettings.width){
            selectedCard = datePickerContainer
            if(currentTimeDate.checked){
                timePickerContainer.x = pageGeneralSettings.width
            }
            animateGoRight.start()
        }else if(timePickerContainer.x != pageGeneralSettings.width){
            selectedCard = timePickerContainer
            animateGoRight.start()
        }else if(globalConfigContainer.x != pageGeneralSettings.width){
            selectedCard = globalConfigContainer
            animateGoRight.start()
        }else if(visualConditionsContainer.x != pageGeneralSettings.width){
            pageStack.push(Qt.resolvedUrl("PageModifications.qml"))
            DataManager.registerGeneralSettings(currentTimeDate.checked,Qt.formatDate(datePicker.selectedDate, "d MMMM yyyy"),Qt.formatTime(timePicker.getCurrentTime(), "hh:mm:ss"), dayDurationTextField.text,isFarCulling.checked, isEnableLensFlare.checked,radioButton(rateReflection.current.text), sliderVisibility.value, sliderLight.value, sliderTurbidity.value )
            pageGeneralSettings.saveGeneralSettings("coucou c'est QML")
        }

     }
     backgroundColor: Theme.accentColor
 }