Qt 튜토리얼
Qt 시작하기
수색…
비고
공식 문서에서 언급했듯이, Qt는 데스크톱, 임베디드 및 모바일을위한 크로스 플랫폼 응용 프로그램 개발 프레임 워크입니다. 지원되는 플랫폼에는 Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS 및 기타가 포함됩니다.
이 절에서는 Qt가 무엇인지, 왜 개발자가 그것을 사용하고 싶어하는지에 대한 개요를 제공합니다.
또한 Qt 내의 큰 주제를 언급하고 관련 주제에 링크해야합니다. qt에 대한 문서는 새로운 것이므로 관련 주제의 초기 버전을 만들어야 할 수도 있습니다.
버전
번역 | 출시일 |
---|---|
Qt 3.0 | 2001-10-16 |
Qt 3.3 | 2004-02-05 |
Qt 4.1 | 2005-12-20 |
Qt 4.8 | 2011 년 12 월 15 일 |
Qt 5.0 | 2012-12-19 |
Qt 5.6 | 2016-03-16 |
Qt 5.7 | 2016-06-16 |
Qt 5.8 | 2017-01-23 |
Qt 5.9 | 2017-05-31 |
Windows 및 Linux에서 설치 및 설정
Linux 용 Qt 다운로드 오픈 소스 버전
https://www.qt.io/download-open-source/로 가서 Download Now (지금 다운로드)를 클릭하고 Linux 용 Qt 설치 프로그램을 다운로드했는지 확인하십시오.
qt-unified-linux-x-online.run이라는 이름의 파일이 다운로드 된 다음 exec 권한을 추가하십시오
chmod +x qt-unified-linux-x-online.run
설치 프로그램의 실제 버전에 대해 'x'를 변경하는 것을 잊지 마십시오. 그런 다음 설치 프로그램을 실행하십시오.
./qt-unified-linux-x-online.run
Qt for Windows 오픈 소스 버전 다운로드
https://www.qt.io/download-open-source/로 이동 하십시오 . 다음 스크린 샷은 Windows에서 다운로드 페이지를 보여줍니다.
지금해야 할 일은 사용하려는 IDE에 따라 다릅니다. 설치 프로그램에 포함되어있는 Qt Creator를 사용하려면 지금 다운로드를 클릭하고 실행 파일을 실행하십시오.
Visual Studio에서 Qt를 사용하려면 일반적으로 지금 다운로드 버튼이 작동해야합니다. 다운로드 한 파일이 qt-opensource-windows-x86-msvc2015_64-xxxexe 또는 qt-opensource-windows-x86-msvc2015_32-xxxexe (여기서 xxx는 Qt의 버전입니다 (예 : 5.7.0))인지 확인하십시오. 그렇지 않은 경우 모든 다운로드보기를 클릭하고 Windows 호스트에서 처음 네 가지 옵션 중 하나를 선택하십시오.
Code :: Blocks에서 Qt를 사용하려면 View All Downloads를 클릭하고 Windows Host에서 Windows 32 비트 용 Qt xxx (MinGW xxx, 1.2GB)를 선택하십시오.
적절한 설치 프로그램 파일을 다운로드했으면 실행 파일을 실행하고 아래 지침을 따르십시오. Qt를 설치하려면 관리자 권한이 필요합니다. 관리자가 아닌 경우 여기에서 여러 가지 대안을 찾을 수 있습니다 .
모든 운영 시스템에 Qt 설치
일단 Qt를 다운로드하고 설치 프로그램을 열면 스크린 샷이 약간 다르게 보일 수 있지만 설치 절차는 모든 운영 체제에서 동일합니다. 여기에 제공된 스크린 샷은 Linux에서 가져온 것입니다.
기존 Qt 계정으로 로그인하거나 새 계정을 만드십시오.
Qt 라이브러리 및 도구를 설치할 경로를 선택하십시오.
라이브러리 버전과 원하는 기능을 선택하십시오.
다운로드가 끝나고 설치가 끝나면 Qt 설치 디렉토리로 이동하여 Qt Creator를 실행하거나 명령 줄에서 직접 실행하십시오.
안녕하세요 세계
이 예에서는 단순히 바탕 화면의 창 프레임에 누름 단추를 만들고 표시합니다. 푸시 버튼에는 Hello world!
레이블이 Hello world!
이것은 가능한 가장 간단한 Qt 프로그램을 나타냅니다.
우선 우리는 프로젝트 파일이 필요합니다 :
helloworld.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = helloworld
TEMPLATE = app
SOURCES += main.cpp
- QT는이 프로젝트에서 사용중인 라이브러리 (Qt 모듈)를 나타내는 데 사용됩니다. 첫 번째 앱은 작은 GUI이므로 QtCore와 QtGui가 필요합니다. Qt5는 QtGui와 별도의 QtWidgets이므로 Qt5로 컴파일하려면
greaterThan
행을 추가해야합니다. - TARGET은 앱 또는 라이브러리의 이름입니다.
- TEMPLATE는 빌드 할 유형을 설명합니다. 응용 프로그램 (app), 라이브러리 (lib) 또는 단순히 하위 디렉토리 (subdir) 일 수 있습니다.
- SOURCES는 프로젝트를 빌드 할 때 사용할 소스 코드 파일 목록입니다.
Qt 애플리케이션을 포함하는 main.cpp도 필요합니다.
main.cpp
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton button ("Hello world!");
button.show();
return a.exec(); // .exec starts QApplication and related GUI, this line starts 'event loop'
}
- QApplication 객체. 이 객체는 응용 프로그램 전체의 자원을 관리하며 GUI가있는 Qt 프로그램을 실행하는 데 필요합니다. Qt는 몇 가지 명령 줄 인수를 허용하기 때문에 argv 및 args가 필요합니다.
a.exec()
호출하면 Qt 이벤트 루프가 시작됩니다. - QPushButton 객체.
Hello world!
라는 레이블이 붙은 푸시 버튼Hello world!
. 다음button.show()
는 화면의 푸시 버튼을 자체 윈도우 프레임에 표시합니다.
마지막으로 응용 프로그램을 실행하려면 명령 프롬프트를 열고 프로그램의 .cpp 파일이있는 디렉터리를 입력합니다. 다음 셸 명령을 입력하여 프로그램을 빌드하십시오.
qmake -project
qmake
make
QtCreator 및 QtDesigner의 기본 응용 프로그램
QtCreator는 현재 Qt 응용 프로그램을 만드는 가장 좋은 도구입니다. 이 예제에서는 버튼을 관리하고 텍스트를 쓰는 간단한 Qt 애플리케이션을 만드는 방법을 살펴볼 것입니다.
새 응용 프로그램을 만들려면 파일 -> 새 파일 또는 프로젝트를 클릭하십시오.
그런 다음 프로젝트 -> 응용 프로그램 -> Qt 위젯 응용 프로그램을 선택하십시오.
그런 다음 프로젝트의 이름과 경로를 선택할 수 있습니다.
다음으로 사용할 키트를 선택할 수 있습니다. 키트가 없으면 QtCreator는 Qt 버전과 컴퓨터의 기본 컴파일러로 키트를 만듭니다. 컴파일러가없는 경우에는 컴파일러를 설치할 수 있습니다. Windows : Visual Studio를 설치하십시오. Linux / Mac : g ++ 또는 clang ++을 설치하십시오.
그런 다음 기본 창 클래스의 이름, 상속 된 클래스, 기본 창 클래스에 해당하는 파일 이름을 선택할 수 있습니다. Qt를 배우거나 테스트하는 경우 실제로 변경하지 않아도됩니다.
마지막 단계는이 프로젝트의 하위 프로젝트를 선택하고 git 및 svn과 같은 버전 컨트롤을 추가하는 것입니다. 다시 말하지만, 테스트를 위해서만 쓰면 변경할 필요가 없습니다.
마침 버튼을 클릭하십시오. 이제 너는 여기 있어야 해.
이것은 응용 프로그램의 기본입니다. Build-> Run 또는 Ctrl + R (기본값)을 클릭하여 실행하면 빈 창이 나타납니다.
이제 텍스트와 버튼을 추가 할 것입니다. 이를 위해 Qt Designer를 사용할 것입니다. mainwindow.ui를 두 번 클릭하십시오. 그러면 다음과 같이 보일 것입니다 : (그렇지 않다면 xml 파일을 보시고 왼쪽의 디자인 버튼을 클릭하십시오)
여기 Qt 디자이너! 꽤 복잡해 보입니다. 그러나 익숙해지면 정말 좋습니다. 텍스트와 버튼을 추가 할 것입니다. 왼쪽에는 항목 목록이 있습니다. 하나를 클릭하고 객체를 끌어다 놓을 수 있습니다. 푸시 버튼을 클릭하고 창에 놓습니다. 그런 다음 레이블을 검색하고 동일한 작업을 수행합니다 (찾고있는 객체를 쓸 수있는 왼쪽 상단에 필터가 있음).
당신은 지금 이것과 같은 것이 있어야합니다 :
개체를 두 번 클릭하여 텍스트를 변경할 수 있습니다. 또는 현재 오른쪽에있는 객체의 속성을 오른쪽 아래에서 볼 수 있으며 text 속성을 찾을 수 있습니다. 이름을 변경할 수도 있습니다.
이제 저장하고 실행하면 (수정 버튼을 더 잘 클릭하고 수정 사항을 저장하기 위해 다시 저장) 다음과 같이 표시됩니다.
응? 내가 달릴 때 왜 내 라벨과 버튼이 그런 것입니까? 우리의 중앙 객체에는 레이아웃이 없기 때문입니다. 그런데 메인 윈도우의 크기를 조정하면 오브젝트가 자신의 자리를 지키고 있음을 알 수 있습니다. 그래서 그것을 고치기 위해 우리는 레이아웃을 추가 할 것입니다. 세로 레이아웃을 가정 해 봅시다. 그래서 왼쪽에있는 객체 목록에서 세로 레이아웃을 드래그 앤 드롭하십시오. 이제 다음 사항을 확인해야합니다.
떠 다니는 레이아웃.
이제 라벨과 버튼을 제외한 메인 윈도우를 마우스 오른쪽 버튼으로 클릭하십시오. c \ Lay out-> Lay Out Vertically를 클릭하십시오. 이제 창에서 수직으로 정렬 된 객체가 표시되어야합니다. 이제 레이블과 버튼을 레이아웃에서 (드래그 앤 드롭으로) 이동하십시오. 이제 다음을 얻으십시오 :
당신의 디자이너. 그리고 당신이 응용 프로그램을 실행하는 경우 :
라벨과 버튼으로 애플리케이션을 볼 수 있습니다. 그리고 창 크기를 조정하면 레이블과 버튼의 크기도 조정됩니다.
그러나 우리 버튼은 여전히 아무것도하지 않고있다. 우리는 2 가지 다른 방법으로 그것을 바꿀 수 있습니다. 첫 번째는 우리가 만든 메서드로 버튼을 연결하는 것입니다. connect라는 메소드를 사용하여이를 수행 할 수 있습니다. 이제 우리 코드로 돌아가서 mainwindow.cpp로 가보자.
connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(whenButtonIsClicked()));
MainWindow의 생성자에서 ui->setupUI(this);
ui를 초기화합니다.
그런 다음 우리의 .cpp 클래스에서 MainWindow :: whenButtonIsClicked ()를 만들면 레이블의 텍스트를 변경할 수 있습니다.
void MainWindow::whenButtonIsClicked()
{
ui->label->setText("the button has been clicked !");
}
그리고 mainwindow.h에서 다음을 추가해야합니다.
public slots:
void whenButtonIsClicked();
공용 슬롯은 신호가 수신 될 때이 메서드를 호출 할 수 있음을 의미합니다. 우리가 단추를 클릭 할 때 신호를 연결하고 전화 할 방법을 연결하십시오.
이제 애플리케이션을 실행하고 버튼을 클릭하면 다음을 얻게됩니다.
우리의 연결 고리가 작동한다는 것을 의미합니다. 하지만 Qt Designer를 사용하면 훨씬 간단하게 작업 할 수 있습니다. 다른 방법으로 연결하려면 연결을 끊고 연결을 끊으십시오 (연결이 다르기 때문에), mainwindow.ui로 돌아가서 단추를 마우스 오른쪽 단추로 클릭하십시오. 슬롯으로 이동 ...을 클릭하고 clicked ()를 선택한 다음 확인을 누릅니다.
그런 다음이 함수로 이동해야합니다.
void MainWindow::on_pushButton_clicked()
{
}
이것은 버튼을 클릭 할 때 호출 될 함수입니다. 그래서 당신은
ui->label->setText("it's even easier !");
그걸로. mainwindow.h로 이동하여 변경 사항을 저장하십시오 (슬롯에 들어가면 요청한 신호와 연결된 메소드가 생성됩니다.) .h의 함수를 정의하지만 저장하지 마십시오. 파일에 저장하고 저장하십시오.
이제 애플리케이션을 실행하고 버튼을 누르면 새 메시지를 볼 수 있습니다 (여전히 이전 메시지가 표시되면 연결을 제거하지 않은 것입니다).
우리는 int, double 등을 레이블에 추가 할 수 있습니다. QVariant
는 다른 많은 것들에서 많은 것을 변환 할 수있는 멋진 클래스입니다. 그래서 왼쪽 버튼을 누르면 int가 증가합니다.
그래서 .h :
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void whenButtonIsClicked();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
double _smallCounter;
};
#endif // MAINWINDOW_H
.cpp :
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(whenButtonIsClicked()));
_smallCounter = 0.0f;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::whenButtonIsClicked()
{
ui->label->setText("the button has been clicked !");
}
void MainWindow::on_pushButton_clicked()
{
_smallCounter += 0.5f;
ui->label->setText("it's even easier ! " + QVariant(_smallCounter).toString());
}
이제는 저장하고 다시 실행할 수 있습니다. 버튼을 누를 때마다 _smallCounter의 값으로 "더 쉽습니다!"라고 표시됩니다. 그래서 당신은 다음과 같은 것이 있어야합니다 :
이 자습서가 완료되었습니다. Qt에 대해 더 알고 싶다면 StackOverflow Documentation 이나 Qt Documentation 에 Qt의 다른 예제와 문서를 보자.