한국어
Qt
 

QML and Qt Quick QML 전역 객체 (Global Object)

makersweb 2019.04.10 23:02 조회 수 : 1048

QML에는 JavaScript의 전역객체 뿐만아니라 내장된 QML전용의 몇가지 전역객체를 제공한다. QtQuick 모듈이 import되었다면 추가 import없이 QML에 로드 된 모든 전역객체 및 helper method, enum등을 사용할 수 있다.

 

"Qt"객체는 유틸리티 함수, 속성 및 Qt 네임 스페이스에서 사용 가능한 enum을 포함한 전역 객체이다. 인스턴스화를 할 필요없다. 즉, new를 이용한 객체를 생성하지 않는다. 이것을 사용하려면 다음의 예처럼 사용할 수 있다.

import QtQuick 2.12
import QtQuick.Controls 1.4

Text{
    text: Qt.md5("https://makersweb.net")
    font.pixelSize: 25
    font.family: fonts.currentText
    color: Qt.rgba(0, 0.5, 1, 1)
}

ComboBox{
    id: fonts
    width: 150
    model: Qt.fontFamilies()
}

Qt_object.png

Enums

Qt 라이브러리 전체에서 사용되는 enum을 사용할 수 있다. 예를 들면 Qt.Key_Q, Qt.Key_1, Qt.Key_Enter 처럼 key 타입을 나타내는 열거형등을 사용할 수 있다. 

 

동적객체 생성 함수

다음 함수를 사용하면 파일이나 문자열에서 QML 항목을 동적으로 만들 수 있다. 

Qt.createComponent(url)

Qt.createQmlObject(string qml, object parent, string filepath)

 

다음은 문자열에서 QML 항목을 동적생성하는 예제이다.

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
    id: window
    visible: true
    width: 640
    height: 480

    // 문자열 QML코드
    property string qmlstring: {
        "
        import QtQuick 2.12

        Rectangle{
            anchors.centerIn: parent
            width: 300
            height: 100
            border.width: 1

            Text {
                id: title
                anchors.centerIn: parent
                font.pixelSize: 20
                text: qsTr('makersweb.net')
            }
        }
        "
    }

    Text{
        text: "click me"
        font.pixelSize: 25
        anchors.centerIn: parent

        MouseArea{
            anchors.fill: parent
            onClicked: {
                // 문자열 QML코드를 동적으로 생성
                Qt.createQmlObject(qmlstring, window)
            }
        }
    }
}

 

clickme.png

makersweb.png

 

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 85855
79 C++로 구현된 모델을 QML의 ListView에서 참조 file makersweb 2019.09.07 4915
78 QSocketNotifier로 파일 디스크립터의 활동감지 makersweb 2019.08.28 1730
77 MCU용 Qt에 대해서 makersweb 2019.08.22 1912
76 [Qt News] Qt for Python을 위한 기술 비전 j2doll 2019.08.20 1626
75 열거형(enum)을 QML에서 사용하는 방법과 문자열(QString)로 얻기 makersweb 2019.08.20 3879
74 [Qt News] Qt 6 기술 비전 (Technical vision for Qt 6) [2] j2doll 2019.08.08 2113
73 [Qt News] Qt6 Git 개발 초기 단계 시작하기 j2doll 2019.08.02 2329
72 [Qt] Google Play의 향후 요구 사항을 준수하는 방법 [2] j2doll 2019.07.29 974
71 Qt기반의 오픈소스 프로젝트들 - 2 운영자 2019.07.21 4002
70 QML, 이미지, 폰트등을 바이너리 리소스로 만들기 makersweb 2019.06.24 3505
69 Qt Creator에서 임베디드 장치로 deploy설정(Custom Process Step) file makersweb 2019.06.15 2200
68 Qt Quick Controls 2사용 및 스타일 설정 file makersweb 2019.06.07 6243
67 QML 강좌 - 동적 Listing (ListView) file makersweb 2019.06.01 10082
66 QtInstallerFramework로 온라인 설치프로그램(Online Installer)만드는 방법 [4] file makersweb 2019.05.28 6258
65 QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2) [1] file makersweb 2019.05.26 14869
64 QML에서 멀티 스레드(multithreading) 프로그래밍 file makersweb 2019.05.25 2650
63 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 11892
62 Qt기반의 오픈소스 프로젝트들 makersweb 2019.05.15 5414
61 Q_D매크로와 d-pointer file makersweb 2019.05.07 759
60 가상키보드(Qt Virtual Keyboard)를 사용하는 방법 [32] file makersweb 2019.05.03 221005