对于模糊的标题感到抱歉,我不知道如何更好地表达它,所以请原谅我。
我有一个存储数据的类,从QObject继承,以及loginSignal
class UserData : public QObject {
Q_OBJECT
public:
Q_INVOKABLE QString login(const QString p_user, const QString p_password, const bool p_remember);
UserData(QObject* parent = 0);
signals:
void userLogin();
};
将课程注册为QML
qmlRegisterType<UserData>("UserData",1,0,"UserData");
连接到QML元素
ApplicationWindow {
UserData {
id:userData
}
Rectangle {
Connections {
target: userData
onUserLogin : {
doSomething()
}
}
}
}
但是如果我在login()函数中调用emit(userLogin())信号,则QML中没有任何内容发生
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine(QUrl("qrc:///mainControl.qml"));
QQmlContext* context = engine.rootContext();
UserData userData;
context->setContextProperty("userData",&userData);
userData.login(user, pass, true);
return app.exec();
}
也许QML组件尚未完成? 并感谢您选择
编辑:看起来我意外在QML中创建了第二个实例,并使用它。现在一切正常:D