GUI(QT) Programming: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
imported>Drake |
imported>Dkj0208 |
||
| 71번째 줄: | 71번째 줄: | ||
* 이를 어떻게 해결하냐면, 이걸 헤더 내에 모듈 변수로 선언을 하면 됩니다. | * 이를 어떻게 해결하냐면, 이걸 헤더 내에 모듈 변수로 선언을 하면 됩니다. | ||
* 실행해보면 제대로 출력되는걸 볼 수 있을겁니다. | * 실행해보면 제대로 출력되는걸 볼 수 있을겁니다. | ||
[[파일:Qt_1_pro_6.png]] | |||
== GUI 기초 및 응용 == | == GUI 기초 및 응용 == | ||
2015년 2월 15일 (일) 07:51 판
QT란 무엇인가?
QT 프로그램 구경하기
- QT 프로그램은 Ubuntu의 경우 소프트웨어센터에서 설치할 수 있다.
- 새 프로젝트(New Project)를 선택하면 다음과 같은 화면이 나온다.
- 위젯 어플리케이션을 선택하면 다음과 같은 화면이 나온다.
- 프로젝트 이름을 정하고 컴파일 키트를 선택한다.
- 프로젝트 이름은 임의로 작성하고, 컴파일 키트는 기본 옵션으로 설정하면 된다.
- 클래스 설정 화면은 다음과 같다.
- Base Class를 다음과 같이 QDialog로 변경한다.
- Github 등을 사용한다면 본인 계정 등을 설정하도록 한다. 이 내용은 QT/Github 항목을 참조.
- 여기서는 그냥 버전컨트롤 없이 진행해도 상관없다.
- Form에 *.ui 를 더블클릭하여 선택하면 다음과 같이 디자이너 모드로 변경된다.
- 어디서 많이 보던것 같지 않은가? Visual Studio의 편집 화면과 비슷하다. Microsoft Visual Studio를 사용해본 경험이 있다면 거의 비슷하게 사용할 수 있다.
- 자, 이제 버튼과 텍스트박스를 집어넣어봅시다.
- 왼쪽에 있는 컴포넌트에서 드래그해서 넣을 수 있다.
- PushButton의 이름을 바꾸는건 간단하다. PushButton 항목을 선택하고, 오른쪽 속성창의 값을 변경해주면 끝.
- 화면 구성을 했으니 버튼에 이벤트를 넣어봅시다.
- 인사하기에서 우클릭을 하고 Go to Slot을 선택합니다.
- Go to Slot을 선택하면 다음과 같은 내용이 나옵니다.
- Clicked를 선택하면 코드 입력 부분이 나오는데, 다음과 같이 입력합니다.
ui->lineEdit->setText("Hello World");
- 지우기 부분 코드
ui->lineEdit->setText("");
- 종료하기 부분 코드
this.close();
기본 문법
변수와 상수 사용하기
- 변수는 프로그램 내에서 수시로 값이 (변)할수 있는 (수)를 말합니다. 반면에 상수는 항(상) 같은 값을 유지하는 (수)를 말하는거죠.
- 프로젝트를 하나 만들고 시작해 보겠습니다.
- C++의 경우 변수를 사용하기 위해서는 선언을 해야 합니다. 일반적으로 헤더파일에 선언을 하죠. 여기서는 data라는 변수를 추가해 보겠습니다.
- 또한, 값을 확인하기 위한 디버그 모듈을 사용할 것입니다.
- 헤더에 QDebug를 사용한다고 선언하고, 정수형 data를 미리 선언합니다.
- 그리고, 다이얼로그가 열릴 때 처리될 수 있도록 다음과 같이 코드를 넣어주면 됩니다.
- qDebug() 함수를 사용할 때, 앞에 q는 소문자임에 유의해 주세요. qDebug() 함수는 c++의 cout과 같은 기능을 한다고 보시면 됩니다.
- 실행하면 아래 디버그 창에 값이 출력되는걸 확인할 수 있습니다.
- 여기서 사용된 data는 사용자가 임의로 만들 수 있는 변수입니다. 변수는 프로그램 내에서 숫자나 문자 등을 보관하는 역할을 합니다.
- 변수는 필요에 따라 얼마든지 만들어 사용할 수 있습니다.
- = 기호는 수학의 등호가 아닙니다. 오른쪽의 값을 왼쪽의 변수에 기억시키는 (또는 할당하는) 연산자입니다.
- 위의 프로그램에서 data 변수는 처음에 100을 기억했다가 다시 200을 기억합니다.
- 이와 같이 변수는 다른 값을 가질 수 있습니다. 그래서 변수입니다.
- 그에 반해 100이나 200같은 숫자는 상수라고 합니다. 이 숫자들은 프로그램이 아무리 실행되어도 항상 100과 200을 유지합니다. 그래서 상수입니다.
- 이제 여러가지 형식의 변수를 선언하고 이용해보도록 하겠습니다.
파일:Qt 1 pro 3.png 파일:Qt 1 pro 4.png
- 정수형 변수 dataint는 정수를 기억합니다. 컴퓨터가 가장 빠른 연산을 할 수 있는 데이터형입니다.
요새 컴퓨터는 존나 빨라서 뭘 써도 안느림 - 실수형 변수 datadou는 소수점 이하의 수를 기억합니다. 내부적으로는 지수 형태로 기억하지만, 일반적으로 소숫점이 있는 수를 저장할 때 많이 사용합니다.
- 논리형 변수 databoo는 true와 false 논리 상수를 기억합니다. 일반적으로 flag같은 값을 많이들 저장합니다.
근데 왜 64비트나 처먹어 - 문자열형 변수 datastr은 할당할 문자열을 반드시 겹따옴표 사이에 기술해야 합니다. 문자열은 문자의 집합을 의미합니다.
- 변수의 종류를 말할 때 위와 같이 데이터형에 따라 정수형 변수, 실수형 변수, 문자열형 변수, ...와 같이 구분합니다. 근데 또 다른 관점에서 구분하는 경우도 있습니다.
- 변수가 영향을 미치는 유효 범위에 따라 다음과 같이 구분하기도 합니다.
- 프로시져 변수 - 프로시져(중괄호{}) 내부에 선언된 변수. 프로시져 안에서만 쓸 수 있다. 보통 지역변수라고들 많이 이야기한다.
- 모듈 변수 - 모듈(파일) 내부에 선언된 변수. 그 파일 안에서만 쓸 수 있다.
- 전역 변수 - 헤더파일에 Public으로 선언한 변수. 다른 모듈에서도 갖다 쓸 수 있다.
이딴거 쓰지 말라고 승질 뻗치니까... - 정적 변수 - 프로시져 내부에 Static으로 선언하는 변수. 프로시져가 종료되어도 값을 유지한다.
- 이에 대해 알아보기 위해 간단하게 프로그램을 하나 작성해보도록 하겠습니다.
파일:Qt 1 pro 5.png 파일:Qt 1 pro 6.png
- 위와 같이 해놓으면 에러가 발생할 것입니다.
햄보칼수가 없어 - 이를 어떻게 해결하냐면, 이걸 헤더 내에 모듈 변수로 선언을 하면 됩니다.
- 실행해보면 제대로 출력되는걸 볼 수 있을겁니다.