Tôi là người mới sử dụng khung Qt. Tôi không chắc mình đang đi sai đâu. Tôi đã thử xem nhiều tài liệu liên quan nhưng vẫn không thể hiểu được.QObject :: kết nối: Không có tín hiệu như vậy trong khi kết nối tín hiệu qml trong C++ Qt 5.3
Tôi nhận được "QObject :: kết nối: Không có lỗi tín hiệu như vậy .." trong khi tôi đã khai báo tín hiệu trong tệp qml.
Đây là mã:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//QDeclarativeView view;
QQmlApplicationEngine engine;
testclass dsc;
QQmlComponent component(&engine, QUrl(QStringLiteral("qrc:///test.qml")));
while(component.isLoading());
if (component.isError()) {
qWarning() << component.errors();
}
QObject *object = component.create();
QQuickItem *item = qobject_cast<QQuickItem*>(object);
QObject::connect(item,SIGNAL(dsa(QVariant)),&dsc,SLOT(testslot(QVariant)));
QObject::connect(&dsc,SIGNAL(dummysignal(QVariant)),&dsc,SLOT(testslot(QVariant)));
dsc.dummysignal(&dsc);
qDebug("Entered :");
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
return app.exec();
}
tập tin QML: test.qml
Item {
width: 800
height: 500
signal dsa(var obj)
SystemPalette { id: palette }
}
class Test: testclass.cpp
#include <QObject>
class testclass: public QObject
{
Q_OBJECT
public:
explicit testclass(QObject *parent = 0);
signals:
void dummysignal(QVariant);
public slots:
void testslot(QVariant);
};
Tôi nhận được lỗi này:
QObject::connect: No such signal test_QMLTYPE_0::dsa(QVariant) in ..
Cảm ơn sự giúp đỡ của bạn. Tôi gọi tài liệu này để viết đoạn mã ban đầu từ QT và ở đó họ sử dụng var trong ví dụ thay vì biến thể. http://qt-project.org/doc/qt-5/qtqml-cppintegration-interactqmlfromcpp.html – atin