我让一个程序工作不同的 qml 文件,首先显示一个获取 idClient 的屏幕,单击一个按钮并发布一个帖子(它工作正常),其次,新屏幕获取 idVent,单击一个按钮并发布一个帖子(这也有效) ,最后第三屏显示了很多数据。我的问题是有时可能会在 post 方法中出错,我会显示一条错误消息(这会随着按钮消失),并且我给出了字符串说错误的参数(如何显示字符串不是问题,问题是如何通过字符串)。
我将有一个加载器元素,如果我不包含错误管理,则可以正常工作。而且我不想在 qml 中实例化 C++ 对象(例如我的 Httppost 类)。我的 qml 代码是这样的:
Loader {
id: pageLoader // ID needed for so we can later delete the item
source: "AnimationSplash.qml"
focus: true
property bool valid: item !== null
anchors.horizontalCenter: parent.horizontalCenter
objectName: "switchPages"
}
Timer {
id: firstPhaseTimer
interval: 750
running: true
repeat: false
onTriggered:{
pageLoader.item.opacity=0;
pageLoader.source="SearchRecipient.qml"
}
}
Connections{
target:pageLoader.item
ignoreUnknownSignals: true
onPostIdClient: {
postClient(pageLoader.typeId, pageLoader.textIdClient)
}
onPostIdVent: {
postVent(pageLoader.textIdVent)
pageLoader.source="MainView.qml"
}
}
postIdClient 和 postIDVent 是来自加载文件的信号,但是如果我的错误管理是在 C++ 中,那么任何人都知道如何更改 ErrorScreen。
我的 C++ 构造函数代码(我加载 main.qml 文件的位置)是这样的:
QObject *mainObject;
QQuickView view;
view.setSource(QUrl::fromLocalFile("./ui/main.qml"));
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.show();
mainObject=view.rootObject();
QObject *switcher=mainObject->findChild<QObject*>("");
if(mainObject)
{
QObject::connect(mainObject, SIGNAL(postClient(QString,QString)), this, SLOT(postingClientData(QString,QString)),Qt::UniqueConnection);
QObject::connect(mainObject, SIGNAL(postVent(QString)), this, SLOT(postIdVent(QString)),Qt::UniqueConnection);
}
最后,如果我无法从 QQuickView 的子 QObject 访问,如何读取和设置 MainView 的属性(我使用这个类来加载 main.qml)