인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

xlql555님의 프로필 이미지
xlql555

작성한 질문수

[입문] Qt 6 프로그래밍 2편

데이터베이스 연동 예제 구현

Writing QML Extensions with C++ 내용에 대해서 질문드립니다!

작성

·

248

1

안녕하세요!

Writing QML Extensions with C++ 튜토리얼 공부 중 궁금한 점이 생겨서 질문드립니다.

https://doc.qt.io/qt-5/qtqml-cppintegration-topic.html

위 튜토리얼에서 QML_IMPORT_NAME 부분이 이해가 되지 않습니다. 이 부분을 사용자 임의로 붙여주는 것인지, 혹은 어디서 볼 수 있는지 궁금합니다.

ddd.JPG

 

답변 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();
}

 

혹시 더 궁금한게 있으면 언제든 질문해 주세요.

 

 

 

 

xlql555님의 프로필 이미지
xlql555
질문자

항상 감사합니다. 쉽게 설명해주셔서 금방 이해했습니다.

xlql555님의 프로필 이미지
xlql555

작성한 질문수

질문하기