달력

22025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

<<Previous - Display Order(2)


QML Object를 동적으로 생성하는 방법에 대한 설명은 아래 링크를 따라 가면 된다.

Dynamic QML Object Creator( http://doc.qt.io/qt-5/qtqml-javascript-dynamicobjectcreation.html )


QML 파일을 동적으로 생성하기 위해서는 Qt 객체의 함수 두 개를 사용해야 한다.

첫 번째로 Qt.createComponent() 를 이용하여 Component를 생성하거나 Qt.createQmlObject() 를 사용하여

문자열로 QML 객체를 정의하여 만들 수 있다.

두 번째로 QML 객체가 생성되면 Qt.createObject() 를 이용하여 생성된 객체에 속성 값을 설정한다.


첫 변째 두 함수의 차이는 Qt.createComponent()는 첫 번째 인자로 QML 객체(소스) URL을 전달하고 Qt.createQmlObject()은 첫 번째 인자로 QML 객체를 정의하고 있는 string을 넘겨준다.


Qt.createComponent()를 이용하여 간단한 javascript함수를 만들면 아래와 같다.

function create_qml_object(qmlfile_url, parent_id) {

    if(qmlfile_url == "") return undefined;


    var component = Qt.createComponent(qmlfile_url);

    if(component.status == Component.Ready) {

        var appobj = component.createObject(parent_id, {"x":0, "y":0, "width":0, "height":0});

        if (appobj != null) {

            appobj.visible = false;

            component.destroy();

            return appobj;

        }

    }

    component.destroy();

    return undefined;

}



create_qml_object 함수를 이용한 예제:

[main.qml]


[Rect.qml]


QML Display Order를 할 수 있는 z Order, Loader 객체 이용, 객체 Creator 세가지 방법에 대해 모두 알아봤다.

사실 Loader객체와 객체를 Creator하는 방법은 QML Display Order에 상관있는 부분은 아니다. 하지만 QML 파일을  필요할 때 생성하고 삭제 하면 Display하는데 조금이나마 유리할 수 있다. 

exQMLCreator.tar.gz


Posted by 생짜
|

​냉장고를 뒤지니 언제적부터 있었는지 모르겠지만 토마토 스파게티 소스가 있더라.

버릴 수는 없었다. 그래 오늘 닭가슴살 양념은 이걸로 하자....

여기다 미나리 대신 숙주를 넣자...로 시작되었다. 


1.재료

별거 없다. 숙조, 편마늘( 오늘은 다진 마늘 아니다. ) 코코아 오일( 살빠진다고 해서 ), 양파, 파, 토마토 소스

2. 레시피

진짜 별거 없다. 그냥 딥다 볶으면 된다. ㅎㅎ

코코넛 오일에 양파와 마늘을 카라멜화 될때까지 볶습니다. 양파는 식용유에는 카라멜화가 금방 되지만 코코넛 오일은 오랜 시간 볶아야 합니다.

양파와 마늘을 어느 정도 볶으면 순서대로 재료를 하나씩 넣으면서 볶으면 됩니다. ㅋㅋㅋ

맛은.....우리가 다 아는 그 맛이다...토마토 스파게티 맛...ㅎㅎㅎ

숙주 때문에 양이 많아졌다. 반정도만 먹고 나머지는 내일 아침에 먹기로 결정 ^^

Posted by 생짜
|

와이프가 안하던 장사를 시작하더니 힘들어한다.

집안 살림도 엉망이 되어간다...장사에 익숙해지기까지는 계속 이렇겠지....



점심값 아낀다고 도시락을 싸가는데 반찬이 매번 같아서 밥먹기가 그렇다는 말을 듣고...

그래서 밑반찬이라도 해주기로 했다.


오늘의 밑반찬은 평상시 늘 만들던...그나마 자신있는 오뎅볶음이다.


1. 재료

숙주 나물, 고춧가루, 판오뎅, 동그랑땡 오뎅, 편마늘, 양파, 간장 되시겠다. ^^

2. 레시피

양파와 마늘을 기름에 볶는다. 오뎅자체에도 기름이 있기 때문에 딱 양파와 마늘 볶을 양만큼의 기름만 사용한다.

양파가 카라멜화 되면 오뎅을 넣고 다시 볶는다.

파와 숙주를 넣고 또 볶는다.

숙주가 살짝 숨이 죽으면 간장으로 간을 한다.

간장을 넣고 볶다가 간장이 오뎅에 어느정도 착색되면 고춧가루와 파를 넣어 볶은 후 마무리한다.

맛은 딱히 없다...ㅋㅋㅋ

내가 간을 쎄개 하지도 않고 기름을 많이 사용하지 않기 때문이다.

'Life > 요리' 카테고리의 다른 글

차돌말이 찜  (0) 2017.06.19
관자버터구이  (0) 2017.06.19
계란말이 김밥  (0) 2017.06.15
베이컨 토스트  (0) 2017.06.12
밑반찬을 만들다. 2-일본식 계란말이 토스트  (0) 2017.06.06
Posted by 생짜
|

<<Previous - Display Order(1)


Loader Object는 URL( source ) 또는 Component Object를 이용하여 동적으로 QML 구성 요소를 생성하는데 사용된다. 

Loader는 QML 파일 (source 속성 사용) 또는 Component 객체 (sourceComponent 속성 사용)를 로드 할 수 있다. 필요에 따라 구성 요소를 작성해야하거나 성능상의 이유로 구성 요소를 불필요하게 작성하지 않아야 할 때까지 구성 요소의 작성을 지연시킬 때 유용하다.


다음은 Row에 Repeater 객체를 이용하여 Rectangle을 5개 만들고 각 Rectangle를 클릭할 때마다 Loader 객체를 이용하여 동적으로 QML 구성 요소를 로드하는 예제이다. 

 



Row 객체 안에 Repeater 객체를 선언하고 Repeater의 model 속성에 5개의 값을 주면 Repeater 객체 안에 선언되어 있는 visual 객체( 여기서는 Rectangle )를 model 수만큼 Row로 생성한다. ( Column 객체안에 Repeater가 선언되어 있다면 Column 형태로 객체가 생성된다. )  MouseArea 객체는 visual 객체 안에서 선언 할 수 있기 때무에 Rectangle 객체의 자식으로 선언되었다. MouseArea 객체안의 index 속성은 Repeater 객체에서 주는 속성이다. 이기 때문에 따로 선언을 하지 않아도 된다. 


[Rect1.qml]


[Rect2.qml]


<1> Rectangle 를 클릭하면 'id_loader'에 source로 "Rect1.qml" 파일을 설정한다. ( main.qml의 Line 38 부터 )

active = false는 혹시 몰라 load되어 있는 qml 파일을 삭제 하는 것이다. Rect1.qml 파일을 load 한 후 active = true를 해줘야 한다. Rect1.qml 을 load한 후 id_loader.item( item은 id_loader에 load되어 있는 객체를 가르킨다. 여기서는 Rect1.qml 객체이다.) 을 이용하여 Rect1.qml에 파일에 있는 객체에 값을 셋팅한다. ( id_loader.item.strTxt = "test" )

Rect1의 확인을 클릭하면 id_loader로 exit signal을 보낸다. blue Rectangle을 클릭하면 id_loader로 Rect1이 signal을 보내고 이 signal을 받은 id_loader가 다시 Rect1에 signal을 보낸다. 이로써 Loader 객체를 사용하여 동적으로 QML 파일을 생성해도 signal 통신 및 생성된 객체에 값을 전달하는 것도 가능하다는 것을 알 수 있다.

<2> Rectangle을 클릭하면 (2) 화면의 red Rectangle이 생성된다. 이 때 active = false를 해줌으로써 전에 로드 되어 있던 Rect1.qml은 삭제, 다시 source에 Rect2.qml을 로드한다. 함수 테스트를 위해 javascript 함수를 만들어서 사용해 봤다.

<3> Rectangle을 클릭하면 단순하게 id_loader의 속성인 visible에 true/false값을 할당하여 id_loader를 보였다 안보였다만 할 뿐이다. id_loader에 할당되어 있는 Rect2.qml은 그대로이다. 

<4> 은 Loader의 source 가 아니라 sourceComponent 속성을 이용하여 파일이 아니라 Component 객체를 로드한 예이다. Component 객체는 main.qml 에 기술되어 있지만 loader를 통해 로딩되기 전까지는 객체가 아니다. 객체가 아니기 때문에 선언되어 있어도 보이지 않는 것이다.

<5>은 visible 속성이 아니라 active 속성을 이용하여 보였다 안보였다 하는 것으로 이 경우 보이는 것이아니라 객체 자체를 해제했다 할당했다 하는 것이다.


exLoader.tar.gz


Next >>

Posted by 생짜
|

​아침에 약 6km를 뛰고 와서 먹은 식사...

블루베리, 저지방 우유 150m, 카카오닙스 티스푼 두개, 단백질 파우더 40g

굳은 의지도 결의에 찬 결심도 없이 얼떨결에 다이어트 시작~~~~~ ㅡ,.ㅡ

이왕 시작한 것 6월 한달만 해볼까....?


Posted by 생짜
|

​버피 4set 15/15/15/15 Total:60

런지 3set 20/20/20 Total:60



'Life > play' 카테고리의 다른 글

2017년 6월 6일 D+12, Go Run~~~~  (0) 2017.06.06
2017년 6월 4일 D+11, Go Run~~~~  (0) 2017.06.05
2017년 5월 24일 D+9, Go Run~~~~  (0) 2017.05.24
2017년 5월 19일 D+8, Go Run~~~~  (0) 2017.05.19
커플운동  (0) 2017.05.17
Posted by 생짜
|

레시피라고 하기까진 좀 거시기 하다 ㅎㅎㅎ

요리 이름은 '닭가슴살 토마토 마늘 미나리 볶음' 이다.
이름 한번 참 길다

살뺄려고 닭가슴살을 먹기 시작했지만 먹어본 사람들은 다 알겠지만 이것 참 먹기 힘들다.
그래서 어떻게 먹을까 고민 좀 해봤다.
미나리! 이거 참 뛰어난 한 수 였다. ㅎㅎㅎ

재료 :
미나리 한웅큼, 버터 10g, 다진마늘, 토마토 하나, 쓸어 놓은 파 약간, 닭가슴살( 삶아서 파는 것 )

레시피 :
1. 재료별로 정리한다.
닭가슴살은 작게 찧어놓고 토마토는 8등분으로 썰어 놓는다. 미아리도 먹기 좋게 썰어 놓는다.

2. 재료를 볶는다.
달군 웍에 버터를 녹이고 다진 마늘을 먼저 볶는다. 버터향에 마늘 냄새가 섞이거나 마늘이 고슬고슬해지면 찧어 놓은 닭가슴살과 썰어 놓은 미나리를 볶는다.
닭가슴살이 노릇하게 익는게 보이면 파를 넣고 더 볶는다.
볶아진 닭가슴살과 미나리를 그릇에 담는다.
버터향이 남아 있는 웍에 토마토를 볶는다. 토마토가 뭉개지기 시작할 때 닭가슴살 담아 놓은 그릇에 담는다.



흠~~~맛있었음....

Posted by 생짜
|

QML은 declarative 언어이기 때문에 위에서부터 선언된 순서대로 Display를 한다.

결국 맨 마지막에 있는 Item이 그려진다는 이야기이다.

다시말해 현재 Item은 바로 위의 Item을 덮는다.

이걸 방지하기 위한 property로 'z' 가 있다. z order는 형제 Item 또는 부모 Item 에게만 적용된다.

즉 부모 Item의 아래에 선언되어 있는 Item 에게는 상위의 z값을 설정해도 적용 되지 않는다.


'결국 맨 마지막에 있는 Item이 최상위에 그려진다는 이야기이다'


이 현상을 막기 위해 몇가지 방법이 있다.

첫번째는 Loader 객체를 최하위에 두고 QML 파일을 Loader를 이용하여 동적으로 할당 하는 것이다.

두번째는 QML 파일을 Loader를 이용하지 않고 create하는 방법이다.


exZorder.tar.gz




Display Order(2) - Use Loader Object >>


Posted by 생짜
|

21세기의 문맹자는 글을 읽을 줄 모르는 사람이 아니라 학습하고, 교정하고 재학습하는 능력이 없는 사람이다.

(The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn.)

-앨빈 토플러(Alvin Toffler)

'Life' 카테고리의 다른 글

하루 1분 발지압법  (0) 2017.06.22
보건증을 받다.  (0) 2017.06.09
나는 왜 내 일에서 최고가 아닐까?  (0) 2017.05.17
속도보다는 방향이다.  (0) 2017.05.17
상선약수수  (0) 2017.05.17
Posted by 생짜
|

IBus로 Hangul을 설치 하면 처음에는 한영변환 단축키가 'ctrl+space'로 설정되어 있다.

평소 Windows에서는 한영변환 단축키를 'Shift+space'로 설정하여 사용하고 있는데 단축키가 다르니 불편했다.

우분투에서도 windows와 마찬가지로 한영변환 단축키를 설정하려니 아래아 같은 에러 메시지가 나왔다.



[system setting -> keyboard 선택]


한마디로 "Shift + Space"는이 키를 사용하여 입력 할 수 없기 때문에 Ctrl, Alt 또는 Shift와 같은 키를 동시에 눌러보라는 이야기다.


이 경우 [system setting ->Text Entry ] 를 선택하여 한영변환 단축키를 변경하니 문제가 해결 됐다. 




'karma( 업 ) > linux' 카테고리의 다른 글

too many file open해결을 위한 명령어  (0) 2019.04.14
valgrind 사용 및 Error Message 읽기  (0) 2019.04.01
strace의 마술  (0) 2017.06.22
Shell Script 참고  (0) 2017.05.26
버추얼 박스에 우분투를 설치하자.  (0) 2017.05.26
Posted by 생짜
|