Qt 5.2 QObject :: connect:无法连接(null)::

时间:2014-02-19 14:38:38

标签: c++ qt

我是一个菜鸟 - 对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”下的函数,但这更容易造成混乱。有人至少可以指出我正确的方向,并记住,我仍然是一个菜鸟...谢谢所有!!!

1 个答案:

答案 0 :(得分:-1)

问题已解决:.pro文件中存在错误。我将代码复制到一个新项目中,它100%正常工作。谢谢大家的帮助!