일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- C API
- QTcpServer
- meta table
- TCP/IP
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- 청량리역한양수자인192
- 월세
- C++ API
- lua install
- 티몬삼겹살데이
- lua interpreter
- 수도권주택공급
- 프리미어 영상변환
- Lua
- file read
- QT TCP
- lua for windows
- 국토교통부
- 등록임대주택
- lua setup
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- 중소규모택지
- 엑스퍼트생일축하해
- file open
- 찾다죽는줄
- 엑스퍼트2주년
- object
- FILE TRANSFER
- 프리미어 영상저장
- file write
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
#2 QT Creator 예제 및 유용한 사이트 모음 본문
아몰랑 유튜브에서 보고싶다
->https://www.youtube.com/watch?v=tHzPBCUi0G8&list=PLumkkj1MBmYs-WArrEkw2R6wO9Agj3FoX
외국 형들의 숨결을 느끼고 싶다
https://wiki.qt.io/Qt_for_Beginners
한국의 매운맛을 보고 싶다
https://wiki.ubuntu-kr.org/index.php/GUI(QT)_Programming
아래는 QT 프로그래밍 간단한 예제이다.
사진 그대로 따라하면 된다.
1) New Project를 누른다.
2) 위젯 선택 후 넥스트를 누른다.
3 ) 넥스트 누른다.
4) "베이스 클래스" 를 "큐 다이얼로그"로 바꾼다.
5) 넥스트 누른다.
6) "폼스"의 "다이얼로그.유아이"를 누른다.
7) "인풋 위젯"의 "라인 에디트"를 넣는다. "버튼스"의 "푸시버튼"도 넣어줄수있다.
8) 우측 하단에 텍스트 이름 바꾸기가 있다.
푸시 버튼 우클릭 후에 "고 투 슬롯"을 선택하면 아래와 같이 클릭 후 이벤트 같은 것을 설정할 수 있다.
9) 세이 헬로우 버튼에서 고 투 슬롯 후 클릭드 버튼을 눌렀을 때 아래와 같이 소스코드로 넘어온다.
ui->lineEdit->setText("Hello World");를 넣어준다.
그리고 Ctrl+R을 누르든지 "Build" 매뉴에 "Run"을 실행해보자.
실행된 ui 에서 SayHello 버튼을 눌러보자.
그러면 ui의 라인 에디트 화면에 Hello World가 나타날 것이다.
10) 실행 결과
Delete 버튼의 코드
ui->lineEdit->setText("");
EndGame 버튼의 코드
this.close();
11) 최종 소스코드 및 실행 결과
*추가된 부분만 노란색으로 표시함.
*Headers -> dialog.h의 소스코드
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QDebug>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
private:
Ui::Dialog *ui;
int data;
int dataint;
double datadou;
bool databoo;
QString datastr;
};
#endif // DIALOG_H
*Sources -> dialog.cpp의 소스코드
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
data = 100;
qDebug() << data;
data = 200;
qDebug() << data;
dataint = 32767;
qDebug() << dataint;
datadou = 32.767;
qDebug() << datadou;
databoo = true;
qDebug() << databoo;
datastr = "OK!";
qDebug() << datastr;
}
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButton_clicked()
{
ui->lineEdit->setText("Hello World");
}
void Dialog::on_pushButton_2_clicked()
{
ui->lineEdit->setText("");
}
void Dialog::on_pushButton_3_clicked()
{
this->close();
}
void Dialog::on_pushButton_4_clicked()
{
//int data; ->dialog.h에 선언되어 있음 -> 모듈변수로 선언되었다.
data = 100;
qDebug() << data;
}
가능한 타입
정수, 실수, 논리형, 문자열
- 프로시져 변수 - 프로시져(중괄호{}) 내부에 선언된 변수. 프로시져 안에서만 쓸 수 있다. 보통 지역변수라고들 많이 이야기한다.
- 모듈 변수 - 모듈(파일) 내부에 선언된 변수. 그 파일 안에서만 쓸 수 있다.
- 전역 변수 - 헤더파일에 Public으로 선언한 변수. 다른 모듈에서도 갖다 쓸 수 있다.
- 정적 변수 - 프로시져 내부에 Static으로 선언하는 변수. 프로시져가 종료되어도 값을 유지한다.
연산자 |
다음과 같이 연산자를 사용할 수 있다. |
int data1; |
int data2; |
data1 = 10; |
data2 = 3; |
// 산술 연산 |
qDebug() << "data1 + data2 = " << data1 + data2; |
qDebug() << "data1 - data2 = " << data1 - data2; |
qDebug() << "data1 * data2 = " << data1 * data2; |
qDebug() << "data1 / data2 = " << data1 / data2; |
qDebug() << "data1 % data2 = " << data1 % data2; |
// 논리 연산 |
qDebug() << QString("(data1 < 11) && (data2 > 2) = %1").arg((data1 < 11) && (data2 > 2)); |
qDebug() << QString("(data1 < 11) || (data2 < 2) = %1").arg((data1 < 11) || (data2 < 2)); |
qDebug() << QString("!(data1 < 11) = %1").arg(!(data1 < 11)); |
조건문 |
Youtube : https://www.youtube.com/watch?v=b-mylI0gTY8 |
if는 다음과 같이 사용할 수 있습니다. |
if(조건식) { 명령문; } |
1개의 조건문 예시 |
int jumsu; |
jumsu = 50; |
if(jumsu < 60) |
{ |
qDebug() << "낙제입니다"; |
qDebug() << "재수강 신청하세요"; |
qDebug() << "마감일은 12월 20일입니다"; |
} |
else |
{ |
qDebug() << "낙제가 아닙니다"; |
qDebug() << "재수강 신청하지 마세요"; |
qDebug() << "마감일 신경쓰지 마세요"; |
} |
qDebug() << "점수는 " << jumsu << "점 입니다."; |
elseif 예시 |
int jumsu; |
jumsu = 50; |
if(jumsu >= 90) |
{ |
qDebug() << "A 학점입니다."; |
} |
else if(jumsu >= 80) |
{ |
qDebug() << "B 학점입니다."; |
} |
else if(jumsu >= 70) |
{ |
qDebug() << "C 학점입니다."; |
} |
else if(jumsu >= 60) |
{ |
qDebug() << "D 학점입니다."; |
} |
else // elseif가 아님 |
{ |
qDebug() << "F 학점입니다."; |
} |
switch 문은 일반적으로 enum과 함께 쓰입니다. |
enum weekday { |
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday |
}; |
int today, yesterday; |
today = Saturday; |
yesterday = today -1; |
switch(yesterday) { |
case Friday: |
case Saturday: qDebug() << "Burning"; break; |
case Monday: qDebug() << "What the Hell"; break; |
default: |
qDebug("Groomy Working Day"); |
} |
enum은 위와 같이 사용합니다. 자세한 사용법은 구글님께. |
반복문 |
for는 다음과 같이 사용합니다. |
for(변수 = 초기값; 최종값에 대한 식; 변수를 어떻게 증감할건지) |
{ |
명령문들; |
} |
예제를 하나 보도록 하죠. |
for(int i = 0; i < 10; i++) |
{ |
res += i; |
qDebug() << i << "까지의 합은 " << res << "입니다."; |
} |
do~while문은 다음과 같이 사용합니다. |
do |
{ |
명령문들; |
} while (최종값에 대한 식); |
이것도 역시 예제를 위의 for와 같은걸 해보도록 하죠. |
int i = 0; // 이처럼 변수 선언을 하면서 초기값을 설정할 수 있습니다. |
do |
{ |
i++; |
res += i; |
qDebug() << i << "까지의 합은 " << res << "입니다."; |
} while (i < 3); |
자, for문과 do~while문의 차이점은 뭘까요? |
for는 괄호 안에 모든 내용을 다 집어넣었지요? 사람들은 반복문을 사용할 때 for를 더 많이 사용하는 이유가 있지요. |
for는 루프 내에서만 사용되는 변수를 지정할 수 있습니다. while은 미리 변수를 선언해야 하고요. |
while은 또 한가지 유의할 점이 있습니다. *무조건* 한번은 프로시져가 실행된다는 점이죠. |
배열 |
프로그램에서 데이터를 임시로 저장하기 위해서 변수를 사용한다는건 아실겁니다. |
그런데 변수중에 '배열'이라는걸 들어보셨을거에요.그걸 왜 쓰는지 궁금하실겁니다. |
일단 '배열'이라는건 같은 데이터 타입을 가지는 변수의 '집단'이라고 할 수 있습니다. |
예를 들어 10개의 과목에 대한 점수를 기억하려면 다음과 같이 10개의 정수형 변수가 필요할 것입니다. |
int score1; |
int score2; |
int score3; |
int score4; |
int score5; |
int score6; |
int score7; |
int score8; |
int score9; |
int score10; |
보세요. 보기만 해도 선언도 귀찮고 기억하기도 힘들겠죠? |
근데, 이걸 100명분을 작성한다고 칩시다. |
이럴땐 다음과 같이 배열로 하면 좀더 쉽게 작성할 수 있습니다. |
타입 변수명[갯수]; |
예제를 하나 보죠. |
int score[100]; |
이런식으로 사용합니다. 다음은 1부터 10까지 돌면서 해당 값에 2를 곱해서 저장하는 프로그램입니다. |
int score[10]; |
for(int i = 0; i < 10; i++) |
{ |
score[i] = i * 2; |
qDebug() << "i = " << score[i]; |
} |
실행 결과는 다음과 같을 것입니다. |
이걸 보고 이상하다는 생각이 들지 않나요? |
컴퓨터한테는 첫번째 숫자가 1이 아니라 0입니다. |
이걸 1부터 시작해서 10으로 끝나게 만들려면 어떻게 해야 할까요? 한번 고민해보고 만들어보시기 바랍니다. :) |
동적 배열 |
int* 변수이름 = new 타입[갯수]; |
타입 뒤에 *가 들어갑니다. 중요합니다. |
또한, 할당하고 나서 다음과 같이 꼭 해제를 해줘야 합니다. |
delete[] 변수이름; |
int* score = new int[10]; |
for(int i = 0; i < 10; i++) |
{ |
score[i] = i * 2; |
qDebug() << "i = " << score[i]; |
} |
다차원배열 |
지금까지 본건 1차원 배열입니다. |
QT를 컴파일하는 gcc의 경우 10차원이 넘는 배열을 선언할 수 있습니다. |
간단한 프로그램을 작성해 봅시다. |
int data[3][5]; |
for(int i = 0; i < 3; i++) |
{ |
for(int j = 0; j < 5; j++) |
{ |
data[i][j] = i * j; |
qDebug() << i << "*" << "j" << "=" << data[i][j]; |
} |
} |
구조체 |
구조체는 다음과 같이 사용합니다. |
struct { |
}; |
'1. 프로그래밍 > 3) QT' 카테고리의 다른 글
#8 [QT4] Network programming - Client (0) | 2019.06.14 |
---|---|
#5 QT Creator 예제 - 계산기, 캘린더, 메모장 (0) | 2019.04.10 |
#4 QT Programming 예제(QListWidget, QComboBox, QTimer, QFileDialog, QGraphicsView, QTabWidget, QProgressBar) (0) | 2019.04.10 |
#3 QT Creator 예제 프로그램 (0) | 2019.04.09 |
#1 QT 5.6.3 + QT Creator 4.2.1 Ubuntu 14.04에 설치 (0) | 2019.04.08 |