윈도우를 생성하고 가장 기본적으로 생성하는 공통 작업이 메뉴만들기일 것이다. 간단하게 메뉴에 대해 알아보려한다. QMainWindow 는 다음과 같이 영역이 구분되어 있다. ( Qt 공식문서 참조 ) 그림에 보이듯이 메뉴는 상단의 Menu Bar 영역에 메뉴가 만들어진다. 메뉴를 만드는 작업은 다음과 같은 과정으로 이루어진다. 메뉴바를 만든다. File, Edit 같은 최상위(팝업) 메뉴를 추가한다. 서브메뉴는 QAction을 생성해서 할당해준다. 메뉴바를 다루기…
[글쓴이:] batmask
Python QT : QT Designer 사용하기
UI를 만들 때, 코드로 하나씩 만들어가는 방법도 알아야 하지만, 너무 비효율적이다. Qt에는 Qt Designer라는게 있고, UI 초안을 이걸로 만들면 매우 빠르게 생성할 수 있다. Qt Designer 에서 Widget 배치하기 Qt Designer를 처음 접했을 때, Widget들을 어떻게 배치할지 난감했다. 이걸 기록하는 이유도 난감했던 기억을 잊지 않기위해 하는 것이다. 코드로 UI를 구성할 때, Layout으로 Widget의 배치를 한다는걸…
Design Pattern: Observer
블로그나 유튜브를 보면, 구독을 해놓고 새글이나 영상이 올라올 때 알람을 받는다. 이런 상호작용을 게시-구독(Publish-Subscribe)관계라고 한다. Observer pattern은 이처럼 observer를 등록해놓고 대상의 변화에 대한 알람을 받는 경우에 적용되는 design pattern이다. Observer pattern은 callback의 형태로 이미 많은 곳에서 사용하고 있고 경험해봤을 것이다. 안드로이드에서 BroadcastReceiver를 등록해 사용하는 것도 이런 형태의 하나라고 볼 수 있다. 하나의 데이터를 두고 여러방식의…
OOP: constructor and inheritance
상속과 관련해서 생성자는 어떻게 연결이 되는지 헷갈릴만한 포인트들이 있어 한 번 정리해 놓는다. Kotlin 코틀린은 생성자에 클래스이름을 쓰지않고 ‘constructor’라는 키워드를 쓴다. 여러 생성자를 가질 수 있으나, primary constructor는 클래스 첫 라인을 활용한다. ( Kotlin 공식문서 참조 ) 두번째 라인처럼 키워드를 안써줘도 된다. 또한, 세번째처럼 class property정의를 써서 추가적인 할당코드없이 간단하게 사용도 가능하다. 조금 당황스러울 수…
OOP: Inheritance and access modifier memo #1
진짜 개인적인 잡담이며, 관련 내용은 별개의 정리 포스팅으로 올리고 있습니다. 디자인 패턴 공부하면서 조금 충격받은게 내가 inheritance와 access modifier조차 이해를 잘못하고 있었다는 사실이다. 단순한 예로 private으로 지정한 클래스 변수는 서브클래스에서 접근이 불가능할 뿐 상속은 되는 거였는데, 상속이 안되는걸로 착각을 하고 있었다. 내 프로그래머 인생이 몽땅 야매였다는 느낌을 받았다. private variable 또는 backing field를 서브클래스에서 어떻게…