커뮤니티 | 큐티/임베디드/큐토피아 | PODO | SDL | 마이크로윈도우 | 리눅스프로그래밍 | 기타 | 포인트순위 | 최근게시물최근게시물 RSS  
korone.net에 다루었으면 하는것은요?
 
 
 
 
 
335
882
3,878
3,960,869
  현재접속자 : 83 (회원 0)






배너 신청 문의

 
작성일 : 15-05-18 16:31
[QT/Win32] QML 에서 CustomModule 을 import 하여 사용하기
 글쓴이 : tmdwn
조회 : 5,871   추천 : 0  
이글은 제가 podovat.com의 blog에 올린글인 (http://www.podovat.com/?p=457) 에서 가져온 것입니다.

QML 을 작성하다 보면 import 구문을 자주 보게 됩니다.
C 의 #include 구문과 같은 역할을 하는 구문인데요

보통 직접 작성한 qml 파일을 import 하게 된다면 다음과 같이 쓰고 있으실 겁니다.

import "." 또는
import "Button.qml"

해당 문제에 대해서 조금 더 간결하고, 알기쉬운 import QtQuick 1.1 과 같은 방식을 원하였기 때문에 해당 이슈에 대해 접근하였고 좀 더 간결한 코드를 얻어낼 수 있었습니다.

디렉토리 선언

$work : project 디렉토리
 $qt : qt 가 설치된 디렉토리


1. Module 디렉토리 생성

$work/CustomModule 디렉토리를 생성 합니다.

 

2. qmldir 파일 생성

$work/CustomModule 디렉토리 내에 qmldir 파일을 생성합니다 (확장자 없음)

 

3. CustomModuel 의 CustomRectangle 생성

필요한 qml 파일들을 CustomModule 디렉토리 내에 생성
여기서는 예제를 위하여 다음과 같은 QML 파일을 생성합니다.

CustomRectangle.qml

import QtQuick 1.0

Rectangle {
 width: 100
 height: 100
 color: "red"
 }


4. qmldir 파일에서 선언하기

2 번에서 만들어놓았던 qmldir 파일내부에서 다음과 같이 선언합니다.
다시 한번 말씀드리지만 qmldir 파일은 확장자가 없어야합니다.

qmldir

module CustomModule
 CustomRectangle 1.0 CustomRectangle.qml


5. import 디렉토리 추가

기본적인 imports 폴더는 $qt/importrs 폴더입니다.
해당 폴더에 위에서 작성한 CustomModule 을 가져다놓으면 import CustomModule 1.0 과 같은 방식으로 사용할 수 있으나, 자기 자신만 적용되는 문제가 있기때문에 ini 파일을 생성하여 수행하도록 하였습니다.

ini 파일의 이름은 qmlpath.ini 로 지정하고 qmlpath.ini 의 세부내용은 $work 디렉토리가 d:/work/testCustomModule 일 경우 다음과 같습니다.

qmlpath.ini 파일이 위치하게 될 곳은 실행파일의 디렉토리 입니다

path = d:/work/testCustomModule/CustomModule
위에 생성한 qml 파일의 내용을 가지고 qml 의 importpath 를 추가해줍니다.

QString qmlPathFilename = QApplication::applicationDirPath() + "/qmlpath.ini";
qDebug() << "main qmlPathFilename:" << qmlPathFilename;
QSettings qmlPathSettings(qmlPathFilename, QSettings::IniFormat);

QString importPath = qmlPathSettings.value("path", "").toString();

if (!importPath.isEmpty())
{
 qDebug() << "main addImportPath path:" << importPath;
 viewer.engine()->addImportPath(qPrintable(importPath)); // imports path 추가
}


6. CustomModule 사용하기

5단계까지 완료하셨으면. 실제로 사용을 하기위한 코드는 다음과 같습니다.
(해당 예제를 수행하기 위해서 프로젝트 생성을 하였으면 main.qml 파일내에 다음과 같이 선언합니다.)

main.qml 내용

import QtQuick 1.1
import CustomModule 1.0

Rectangle {
    width: 800
    height: 480

    CustomRectangle {
        x: 50
        y: 50
    }
}
nais·sance [nisns] http://tmdwn.net



 
 

Total 220
번호 제   목 글쓴이 날짜 조회 추천
220 자신이 해야 할 일을 결정하는 사람은 세상에… rqyuspv875 10-21 5 0
219 산다는것 그것은 치열한 전투이다. -로망로랑… rqyuspv875 10-21 3 0
218 인간의 삶 전체는 단지 한 순간에 불과하다 . … rqyuspv875 10-21 3 0
217 source 삶이 그대를 속일지라도 슬퍼하거나 노… rqyuspv875 10-21 3 0
216 내일은 내일의 태양이 뜬다 피할수 없으면 즐… wyltqme425 10-20 9 0
215 인생이란 학교에는 불행 이란 훌륭한 스승이 … wyltqme425 10-20 6 0
214 최고에 도달하려면 최저에서 시작하라.-P.시… wyltqme425 10-20 2 0
213 해야 할 것을 하라. 모든 것은 타인의 행복을 … wyltqme425 10-20 3 0
212 평생 살 것처럼 꿈을 꾸어라.그리고 내일 죽… wyltqme425 10-20 10 0
211 이룰수 없는 꿈을 꾸고 이길수 없는 적과 싸… wyltqme425 10-20 7 0
210 만약 우리가 할 수 있는 일을 모두 한다면 우… wyltqme425 10-20 16 0
209 꿈을 계속 간직하고 있으면 반드시 실현할 때… wyltqme425 10-20 7 0
208 사막이 아름다운 것은 어딘가에 샘이 숨겨져 … wyltqme425 10-20 4 0
207 자신의 본성이 어떤것이든 그에 충실하라 . … wyltqme425 10-20 3 0
206 아래에 비교하면 남음이 있다.-명심보감[쇼미… wyltqme425 10-20 7 0
205 nephew 삶이 있는 한 희망은 있다 -키케로유혜… wyltqme425 10-20 7 0
204 고통이 남기고 간 뒤를 보라! 고난이 지나면 … rqyuspv875 10-20 7 0
203 진짜 문제는 사람들의 마음이다.그것은 절대… rqyuspv875 10-20 9 0
202 지금이야 말로 일할때다. 지금이야말로 싸울… rqyuspv875 10-20 6 0
201 도저히 손댈 수가 없는 곤란에 부딪혔다면 과… rqyuspv875 10-20 19 0
200 우선 무엇이 되고자 하는가를 자신에게 말하… rqyuspv875 10-20 9 0
199 longer 자신감 있는 표정을 지으면 자신감이 생… rqyuspv875 10-20 3 0
198 [QT/Win32] MFC에서 Qt 사용하기 팁. (3) devilqoo 09-10 3059 0
197 [QT/X11] QML 모델을 C++ 코드로 구현하는 방법 중 하나 (1) 구름님 12-03 4758 0
196 [QT/X11] QWT for qt android (1) 구름님 03-07 6311 1
195 [QT/Embedded] QTcpSocket사용 시 플러그 뽑힘 증상 체크 방법 요원009 11-13 10251 0
194 [QT/Win32] QML 에서 CustomModule 을 import 하여 사용하기 tmdwn 05-18 5872 0
193 [QT/Embedded] Qt update함수/repaint함수 사용법좀 알려주세여.. (1) 잉농 05-14 5738 0
192 [QT/Embedded] C++ Exception을 활용한 런타임 콜스택 정보 얻기 (1) korone 04-01 6070 0
191 [QT/Embedded] Qt 5.4.1 raspberry Pi 프로그램 개발하기 (5) 구름님 03-31 20192 1
 1  2  3  4  5  6  7  8  


About korone.net | Copyright 2003 korone.net. All rights reserved.