我是一个菜鸟 - 对QML或C ++不好,但到了那里。我似乎遇到了一个我无法过去的绊脚石。我在尝试运行构建时遇到以下错误,我不确定我在代码中错过了什么...
** QObject :: connect:无法连接(null):: buttonClicked_enable()到TLA_Funcs :: sys_enable() **
我在这里查看了问题的其他版本,似乎我的代码正确,但我仍然得到错误。有人可以偷看吗?这是我的代码的相关示例(其余的太长,我遗漏了函数的内容 - 太长了。)
QML代码:
Rectangle {
id: main
width: 800
height: 600
color: "#abcfe9"
border.width: 4
border.color: "#000000"
signal buttonClicked_enable()
Button {
id: enable
x: 628
y: 55
text: "ENABLE"
onClicked:buttonClicked_enable()
}
//....
}
我的班级标题: #ifndef TLA_FUNCS_H #define TLA_FUNCS_H
#include <QObject>
class TLA_Funcs : public QObject
{
Q_OBJECT
public:
explicit TLA_Funcs(QObject *parent = 0);
signals:
public slots:
Q_INVOKABLE void sys_enable(){return ;}
private:
};
#endif
在我的main.cpp文件中:
#include "TLA_Funcs.h"
TLA_Funcs::TLA_Funcs(QObject *parent) :
QObject(parent)
{
}
int main (int argc, char*argv[]) {
QGuiApplication app(argc, argv);
QQuickView *view = new QQuickView(QUrl("main.qml"));
view->show();
QQuickItem *item = view->rootObject();
TLA_Funcs *funcs = new TLA_Funcs();
QObject::connect(item, SIGNAL(buttonClicked_enable()), funcs, SLOT(sys_enable()));
}
我已经在父矩形中定义了信号,并且在我尝试过的按钮代码中使用了:
onClicked:main.buttonClicked_enable()
以及:
onClicked: {
buttonClicked_enable()
TLA_Funcs.sys_enable()
}
这也没有帮助。我也尝试在类中定义“signal”下的函数,但这更容易造成混乱。有人至少可以指出我正确的方向,并记住,我仍然是一个菜鸟...谢谢所有!!!
答案 0 :(得分:-1)
问题已解决:.pro文件中存在错误。我将代码复制到一个新项目中,它100%正常工作。谢谢大家的帮助!