QML与C+通信+; 我在QML与C++通信方面遇到了问题。我已经完成了使示例代码正常运行所需的所有步骤。在这个小例子上花了几个小时之后,它归结为一条错误消息,我简直无法摆脱: ./input/main.cpp:18: error: no matching function for call to 'QObject::connect(QObject*&, const char*, Input*, const char*)' &input, SLOT(cppSlot(QString))); ^
我读了之前的一些文章,仔细检查了所有内容,显然所有内容都是正确的。详情如下: /来源/main.cppQML与C+通信+; 我在QML与C++通信方面遇到了问题。我已经完成了使示例代码正常运行所需的所有步骤。在这个小例子上花了几个小时之后,它归结为一条错误消息,我简直无法摆脱: ./input/main.cpp:18: error: no matching function for call to 'QObject::connect(QObject*&, const char*, Input*, const char*)' &input, SLOT(cppSlot(QString))); ^,c++,qt,qml,C++,Qt,Qml,我读了之前的一些文章,仔细检查了所有内容,显然所有内容都是正确的。详情如下: /来源/main.cpp #include <QtGui/QGuiApplication> #include <QtQml/QQmlApplicationEngine> #include <QtQml/QQmlEngine> #include <QQuickWindow> #include <QtDeclarative> #include <QObjec
#include <QtGui/QGuiApplication>
#include <QtQml/QQmlApplicationEngine>
#include <QtQml/QQmlEngine>
#include <QQuickWindow>
#include <QtDeclarative>
#include <QObject>
#include <QDebug>
#include "Input.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QDeclarativeView view(QUrl::fromLocalFile("input.qml"));
QObject *item = view.rootObject();
Input input;
QObject::connect(item, SIGNAL(qmlSignal(QString)),
&input, SLOT(cppSlot(QString)));
view.show();
return app.exec();
}
./Resources/Input.qrc
/
Input.qml
我使用的connect来自以下示例:
QObject::connect(item, SIGNAL(qmlSignal(QString)),&myClass, SLOT(cppSlot(QString)));
也许有人能知道这里少了什么?谢谢 请真正的
课堂输入站起来好吗
您似乎在Input.h中定义了一个,在Input.cpp中定义了另一个。其中只有一个是Q_对象和QObject子类。main.cpp从Input.h中看到了另一个,因此它不能连接它也就不足为奇了
参见此,如果您不熟悉C++的这个区域,请正确区分C++类声明和定义,如果你不熟悉C++的这个区域。我注释掉了整个Input.h,并将所有内容移到Input.cpp中。然后编译器给出:./Input.cpp:8:错误:不完整类型'class QDebug'QDebug()@timday的无效使用意味着
#include
而不是#include
;-)您缺少Q_对象和/或缺少源文件末尾的#include“Input.moc”
include。。。或者,您缺少添加到标题
变量的输入.h。此外,您不需要在标题中包含qdebug,因为在标题中没有使用它。@timday。引人注目。谢谢你指点那个人!现在我解决了在我的帖子中更新的类双重声明。只有错误仍然存在。@GerryWoodberg:您的代码仍然错误。此外,如果您使用QtCreator,则会显式重新运行make qmake。
/
Input.qml
QObject::connect(item, SIGNAL(qmlSignal(QString)),&myClass, SLOT(cppSlot(QString)));