Qt Creator로 어플리케이션 만들기0

kenGwon·2024년 3월 4일
0

[Embedded Linux] Qt

목록 보기
2/3

X윈도우

X윈도우는 하나의 어플리케이션이라고 이해하는게 맞다.
서버용 리눅스는 굳이 X윈도우를 실행해서 리소스를 낭비할 필요가 없다.
(내가 생각하고 있던 개념과 일치)

runlevel

runlevel 5 = GUI 데스크탑 환경
runlevel 3 = CLI 텍스트 환경

// 이전 런레벨 모드와 현재 런레벨 모드 확인
$ runlevel
N 5

// 런레벨 3으로 전환
$ sudo init 3

$ runlevel
5 3

Qt의 모듈

임베디드 시스템은 메모리가 부족하기 때문에, 사용하지 않는 라이브러리를 모두 메모리에 올려놓는 것은 낭비이다. 그래서 이러한 것에 대응하기 위해서 Qt는 주요 라이브러리들을 모듈 단위로 묶어서 지원함으로써 꼭 필요한 모듈만 가져다가 메모리에 올려놓고 효율적으로 사용할 수 있게끔 하고 있다.

요즘 apt 포팅이 하두 잘되어있어서 그냥 라즈베리파이에서도 apt로 qt를 사용할 수 있는데, 소형의 임베디드 파일시스템이 올라가는 타겟보드에 apt 명령이 없을 경우가 대부분이다.(또한 내가 사용해야 하는 Qt버전이 특수한 버전일 수 있다) 그래서 그러한 경우에는 크로스 컴파일 환경에서 컴퓨팅 성능이 좋은 컴퓨터에서 직접 빌드를 한 뒤에 그것을 타겟보드로 가져가서 환경을 구성해야 할 수도 있다.

무거운 Qt Creator를 라즈베리파이에 깔지 않고 사용하는법

"NFS"를 활용한다.

우분투 가상환경에서 Qt Creator를 실행하여 프로젝트 폴더를 열때 소스폴더 위치를 nfs 위치로 잡아놓고 거기서 수정을 한 다음에, 컴파일만 qmake-make로 라즈베리파이에서 하면 된다. (그냥 Qt Creator에서 바로 컴파일 후 실행하면 x86용 실행파일이 만들어져서 실행되기 때문에, ARM용 실행파일을 만들어서 실행하기 위해 라즈베리파이에서 qmake-make하는 것 뿐이다.)
(이런 창의적인 방법은 호스트시스템과 타겟시스템이 같은 리눅스이기 때문에 가능한 것이다.)

CLI에서 Qt 어플리케이션 만들고 빌드하고 실행하는법

  1. 소스를 작성한다.
  2. qmake -project 명령으로 .pro 파일을 만든다.
  3. .pro 파일에 아래 사진의 4번째 라인 QT += widgets를 추가해준다.

    이렇게 해줘야 make할때 <QApplicatoin>이나 <QLabel>같은 모듈들을 찾아서 include 할 수 있게 된다.
  4. make한다. 그러면 실행파일이 생긴다.
  5. GUI 환경에서 실행파일을 실행한다.

소스파일이 추가되었을 때, qmake를 해서 Makefile을 다시 만들어줘야 한다.
그냥 소스파일이 수정만 되면 그냥 원래 Makefile을 가지고 make만 하면 된다.

Qt와 Android

안드로이드도 Qt와 느낌이 비슷하다. 다만 안드로이드는 액티비티라고 해서 하나의 화면단위로 프로그램을 한다.


Qt Creator

~/Qt/Example/testWidget

Qt Creator를 통해서 그냥 실행할 수도 있고, 그냥 qmake - make를 통해서 만들어서 실행할 수도 있다.

QMainWindow.h

위에 메뉴바 있는거

QDialog

대화형으로 생긴거

QWidget

제일 심플한거

MainWidget Object 최상위 레이아웃 우클릭하고 [Lay out] 눌러서 [vertical layout]을 누르면 레이아웃을 꽉차에 만들 수 있다. 그리고 다시 원래대로 수정하기 위한 창으로 돌아가고 싶으면 [break layout]을 누르면 된다.


레이아웃 안에 레이아웃을 넣어서 버튼 구성을 편하게 했다.

그리고 레이아웃 속성에 [layout strech]라는게 있는데, 여기에 10을 전체 값으로 갖는 비율값을 넣어주면 레이아웃 안에 컴포넌트들이 차지하는 공간영역의 비율이 된다.


평가 (금요일 오후 3시간)

화/수/목요일에 배운 내용을 가지고 응용해서 금요일에 평가가 진행될 예정임

평가 핵심부분: "차트 / 소켓 / SQL"

profile
스펀지맨

0개의 댓글

관련 채용 정보