C++与QML交互时有个问题,可能缺少一步什么操作,求大神指点。
我的需求:程序运行后,qml能自动收到C++中的list数据,而不需通过点击鼠标等手动操作。搞了半天还是不会,所以出来请教大神。我的做法:1.C++构造函数中,初始化了Q...
我的需求:
程序运行后,qml能自动收到C++中的list数据,而不需通过点击鼠标等手动操作。搞了半天还是不会,所以出来请教大神。
我的做法:
1.C++构造函数中,初始化了QList<QString> list,然后发送数据emit sendList(list);
qml中onSendList也定义好了,但接收不到list数据。
2.如果定义延时函数发送该信号,或者在qml中调用发送该信号的函数,则能收到数据。
猜想:
可能是时机问题,程序先调用C++构造函数中的emit,但此时onSendList还没初始化,于是收不到信号。
这个问题主要就是想知道qml有没默认执行的操作,刚知道了,所以也解决了。qml中添加,会默认执行,具体不是很明白,大神可以讲讲。
Component.onCompleted: {
dataObject.funcSendList()
} 展开
程序运行后,qml能自动收到C++中的list数据,而不需通过点击鼠标等手动操作。搞了半天还是不会,所以出来请教大神。
我的做法:
1.C++构造函数中,初始化了QList<QString> list,然后发送数据emit sendList(list);
qml中onSendList也定义好了,但接收不到list数据。
2.如果定义延时函数发送该信号,或者在qml中调用发送该信号的函数,则能收到数据。
猜想:
可能是时机问题,程序先调用C++构造函数中的emit,但此时onSendList还没初始化,于是收不到信号。
这个问题主要就是想知道qml有没默认执行的操作,刚知道了,所以也解决了。qml中添加,会默认执行,具体不是很明白,大神可以讲讲。
Component.onCompleted: {
dataObject.funcSendList()
} 展开
1个回答
2017-09-21
展开全部
详细一点想要怎么交互.你可以用qmlRegisterType在QML启动之前(main.cpp中)把C++的类注册成为一个QML类型,在C++里面定义好你的属性信号方法之类的,在QML页面上调用这些东西就可以.或者你可以在main.cpp中定义上下文 mlContext*conte
追问
追问一个问题,如何给动态添加的对象添加鼠标事件?
var component = Qt.createComponent("Button.qml");
if (component.status == Component.Ready)
component.createObject(parent, {"x": 100, "y": 100});
MouseArea不知如何写
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询