Я ноб - не хорошо с 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()
}
Это тоже не помогло. Я также попытался определить функции под "сигналом" в классе, но это сделало больше беспорядка. Может кто-то хотя бы указать мне в правильном направлении, и имейте в виду, я все еще ноб... Спасибо всем !!!
Устранена проблема: произошла ошибка в файле.pro. Я скопировал код в новый проект, и он корректно работал на 100%. Спасибо всем за помощь!