标题:请问注册类到QML的问题
作者:nyaruko
日期:2017-04-27 19:22
内容:
我想在QML接收到类发送的信号
所以使用了qmlRegisterType
代码如下:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
//注册类到QML
qmlRegisterType("myTimer", 1,0, "MTimer");
QQmlEngine engine;
mTimer m_timer;
engine.rootContext()->setContextProperty("m_timer", &m_timer);
QQmlComponent component(&engine, QUrl(QStringLiteral("qrc:/main.qml")));
component.create();
return app.exec();
}
类的代码:
class mTimer : public QObject
{
Q_OBJECT
public:
explicit mTimer(QObject *parent = 0);
signals:
void whenTimeChanged(const QString &timeStr);
public slots:
void onStartBtnClicked();
void onStopBtnClicked();
void onTimerTimerOut();
}
QML
MTimer{
onWhenTimeChanged: timeText.text = timeStr
}
已经对照书和百度上的教程好多遍了,感觉没有错误
但是编译的时候要么就提示component is not ready 或者不提示这个错误,但是接收不到信号
请问是为什么?
#1 [never_forget 04-28 08:32]
为什么你注册的是类对象,但是却使用类本身呢?你是怎么做到的,你的 Qt没有报错嘛?
我怀疑你买了本假书,上了一个假的百度~~~
component is not ready 这个就是说你的 QML 文件有问题,不能正确加载~~~
至于有时候不提示这个错误,可能 QML 编译环境不稳定造成的~~~
#2 [toby520 04-28 09:36]
main函数写错了 使用engine去load 因为你load的是主界面
#3 回 toby520 的帖子 [nyaruko 04-28 11:46]
toby520:main函数写错了 使用engine去load 因为你load的是主界面 (2017-04-28 09:36)
谢谢,试了一下才发现原来用了qmlRegisterType后就不需要再使用compoent了。。
#4 回 never_forget 的帖子 [nyaruko 04-28 11:50]
never_forget:为什么你注册的是类对象,但是却使用类本身呢?你是怎么做到的,你的 Qt 没有报错嘛?
我怀疑你买了本假书,上了一个假的百度~~~
component is not ready 这个就是说你的 QML 文件有问题,不能正确加载~~~
....... (2017-04-28 08:32)
没有报错呀,qmlRegisterType和component不能同时存在么。。