找回密码
 立即注册
收起左侧

Qml 与 C++ 交互 求教

1
回复
7819
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2013-8-19 10:32:53 显示全部楼层 |阅读模式
5Qter豆
本帖最后由 Dagan 于 2013-8-19 10:55 编辑

我刚开始学Qt,在Qt自带的help 有关于 qml 和C++的交互 ,使用的环境是Qt 5.1.0
相关内容是 Interacting with QML Objects from C++
示例代码如下

  1. // MyItem.qml
  2. import QtQuick 2.0

  3. Item {
  4.     id: item
  5.     width: 300; height: 300

  6.     signal qmlSignal(string msg)

  7.     Rectangle{
  8.         color: "#448db1"
  9.         anchors.fill: parent
  10.     }

  11.     MouseArea {
  12.         anchors.fill: parent
  13.         onClicked: item.qmlSignal("Hello from QML")
  14.     }
  15. }
复制代码
  1. #include <QtGui/QGuiApplication>
  2. #include "qtquick2applicationviewer.h"
  3. #include <QDebug>
  4. //#include <QQuickItem>

  5. class MyClass : public QObject
  6. {
  7.     Q_OBJECT
  8. public slots:
  9.     void cppSlot(const QString &msg) {
  10.         qDebug() << "Called the C++ slot with message:" << msg;
  11.     }
  12. };

  13. int main(int argc, char *argv[]) {
  14.     QGuiApplication app(argc, argv);

  15.     QQuickView view(QUrl::fromLocalFile("qml/TestCpp/main.qml"));
  16.     //QObject *item = view.rootObject();
  17.     QQuickItem *item = view.rootObject();

  18.     MyClass myClass;
  19.     //QObject::connect(item, SIGNAL(qmlSignal(QString)),
  20.      //                &myClass, SLOT(cppSlot(QString)));

  21.     view.show();
  22.     return app.exec();
  23. }
复制代码
但Build出现问题,我把QObject 改成 QQuickItem,Connect就会报错,这是为什么,如何解决?

错误讯息如图
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

单从代码上还真看不出有什么问题。。QQuickItem本身也是QObject,理论上是没有问题的。 另外,qml和c++交互一般常用另一种信号槽方法来交互,用contextProperty加载一个类来传递信号,这种方法是不需要显式connect
回复

使用道具 举报

尚未签到

2013-8-19 10:32:54 显示全部楼层
单从代码上还真看不出有什么问题。。QQuickItem本身也是QObject,理论上是没有问题的。

另外,qml和c++交互一般常用另一种信号槽方法来交互,用contextProperty加载一个类来传递信号,这种方法是不需要显式connect
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了