작성
·
241
1
안녕하세요!
Writing QML Extensions with C++ 튜토리얼 공부 중 궁금한 점이 생겨서 질문드립니다.
https://doc.qt.io/qt-5/qtqml-cppintegration-topic.html
위 튜토리얼에서 QML_IMPORT_NAME 부분이 이해가 되지 않습니다. 이 부분을 사용자 임의로 붙여주는 것인지, 혹은 어디서 볼 수 있는지 궁금합니다.
답변 1
1
안녕하세요. xlql555 님,
project 파일에 QML_IMPORT_NAME 을 io.qt.examples.backend 로 지정해 QML 에서 사용할 수 있다는 말인데요. 그러니까 QML에서 C++ 클래스를 Emport 할 수 있다고 이해하면 됩니다.
예를 들어 C++ 에서 include 를 이용해 다른 클래스를 사용하는 거라고 이해하시면 됩니다. 즉, BackEnd 클래스를 QML에서 사용하기 위한 방벙입니다. 하지만 QML_IMPORT_NAME 을 사용하는 방식은 거의 사용하지 않습니다. 성능을 좀더 높이는데 사용되긴 하지만 거의 사용되지 않습니다.
주로 아래와 같이 C++ 클래스를 IMPORT 하기 위해서 qmlRegisterType 을 사용합니다.
#include <QGuiApplication>
#include <QQmlApplicationEngine>
.
#include <QQuickView>
#include <QQmlContext>
#include <qqml.h>
#include "message.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<Message>( "Message", 1, 0, "Msg" );
QQuickView viewer;
Message msg;
viewer.engine()->rootContext()->setContextProperty("msg", &msg);
viewer.setSource( QUrl( "qrc:///main.qml" ) );
viewer.show();
return app.exec();
}
혹시 더 궁금한게 있으면 언제든 질문해 주세요.
항상 감사합니다. 쉽게 설명해주셔서 금방 이해했습니다.