|
5Qter豆
本帖最后由 Dagan 于 2013-8-19 10:55 编辑
我刚开始学Qt,在Qt自带的help 有关于 qml 和C++的交互 ,使用的环境是Qt 5.1.0
相关内容是 Interacting with QML Objects from C++
示例代码如下
- // MyItem.qml
- import QtQuick 2.0
- Item {
- id: item
- width: 300; height: 300
- signal qmlSignal(string msg)
- Rectangle{
- color: "#448db1"
- anchors.fill: parent
- }
- MouseArea {
- anchors.fill: parent
- onClicked: item.qmlSignal("Hello from QML")
- }
- }
复制代码- #include <QtGui/QGuiApplication>
- #include "qtquick2applicationviewer.h"
- #include <QDebug>
- //#include <QQuickItem>
- class MyClass : public QObject
- {
- Q_OBJECT
- public slots:
- void cppSlot(const QString &msg) {
- qDebug() << "Called the C++ slot with message:" << msg;
- }
- };
- int main(int argc, char *argv[]) {
- QGuiApplication app(argc, argv);
- QQuickView view(QUrl::fromLocalFile("qml/TestCpp/main.qml"));
- //QObject *item = view.rootObject();
- QQuickItem *item = view.rootObject();
- MyClass myClass;
- //QObject::connect(item, SIGNAL(qmlSignal(QString)),
- // &myClass, SLOT(cppSlot(QString)));
- view.show();
- return app.exec();
- }
复制代码 但Build出现问题,我把QObject 改成 QQuickItem,Connect就会报错,这是为什么,如何解决?
错误讯息如图
|
最佳答案
查看完整内容
单从代码上还真看不出有什么问题。。QQuickItem本身也是QObject,理论上是没有问题的。
另外,qml和c++交互一般常用另一种信号槽方法来交互,用contextProperty加载一个类来传递信号,这种方法是不需要显式connect
|