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