[Qt] Visual Studio์์ Qt Designer Button ์ด๋ฒคํธ ์ฐ๊ฒฐํ๊ธฐ
์๊ฐ
Qt Creator๋ฅผ ์ฌ์ฉํ๋ฉด MFC๋ณด๋ค ๋ ์ฝ๊ณ ๋ ์์ UI ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ง์ฝ, MFC๋ก ๋ฉ์๋ Application์ ๋ง๋ค๋ ค๊ณ ํ๋ฉด ์์ ์ด ๋๋ ์์ ๊ฒ์ ๋๋ค.
๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ UI ์ปจํธ๋กค์ ํ๊ณ์ ์ด ํฌ๊ธฐ ๋๋ฌธ์ด์ฃ .
๊ทธ๋ ๋ค๊ณ Qt๋ก ๋์ด๊ฐ์๋ ์๋ก์ด ํด์ ๋ฐฐ์ฐ๊ธฐ๊ฐ ๋ถ๋ด์ค๋ฌ์ธ ์๋ ์์ต๋๋ค.
๊ทธ๋์ ์ง๋ ๋ฒ์ Visual Studio & Qt Add-in์ ๋ํ ์๊ฐ๋ฅผ ํ ์ ์ด ์์ต๋๋ค.
์ด๋ฒ์๋ Visual Studio 2017์์ Qt Designer๋ฅผ ์ฌ์ฉํ์ฌ UI ์์ ํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ ์ ํฉ๋๋ค.
โป ์์ ํ์ผ์ ํ๋จ์ ์ฒจ๋ถ๋์ด ์์ต๋๋ค.
๋ฐ๋ผํ๊ธฐ
Visual Studio๋ฅผ ์คํํ๊ณ Qt GUI Application ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
Qt GUI Application ํ๋ก์ ํธ ์์ฑ ํ๋ฉด
๊ทธ๋ฌ๋ฉด ์๋ ๊ทธ๋ฆผ ์ฒ๋ผ Qt GUI Application Wizard๊ฐ ์์ฑ๋๋๋ฐ์.
'Next'๋ฅผ ํด๋ฆญํฉ๋๋ค.
Qt GUI Application Wizard
๋ค์์ Qt Module์ ์ ํํ๋ ํ๋ฉด์ ๋๋ค.
์ด๋ฒ ์์ ์์๋ ๋ฒํผ ์ปจํธ๋กค(Button control)๋ง ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ ํ์ ํ์ง ์๊ฒ ์ต๋๋ค.
'Next'๋ฅผ ํด๋ฆญํฉ๋๋ค.
Qt GUI Module ์ ํ ํ๋ฉด
Base class ํญ๋ชฉ์ QMainWindow / QWidget / QDialog ์ธ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
Qt GUI Application Base class
๊ฐ ํญ๋ชฉ์ ๊ฐ๋จํ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
QMainWindow ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ํ, QToolBars, QDockWidgets, QMenuBar ๊ทธ๋ฆฌ๊ณ QStatusBar๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฉ์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ ๋ ์ฌ์ฉํ๋ค๊ณ ์ดํดํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
QMainWindow Layout
QWidget ์ ๋ชจ๋ GUI ์์์ ๋ํ ๊ธฐ๋ณธ ํด๋์ค(base class)์
๋๋ค.
๋ ๋ฆฝ์ ์ธ ์๋์ฐ(top-level widget)๋ก ์์ฑ๋ ์๋ ์๊ณ , ๋๋ถ๋ถ ํ์ ์์ ฏ(child widget)์ผ๋ก ์์ฑํ์ฌ ์ฌ์ฉํฉ๋๋ค.
์ด๊ฒ์ QDialog์ ๊ฐ์ ๋ค๋ฅธ ์์ ฏ์ button์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ํํ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ฆ, ์๋์ ๊ฐ์ด ์๋์ฐ๊ฐ ์๋ Widget์ Dialog์ ๋ถ์ฌ์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ์ ๋๋ค.
QWidget
QDialog ๋ QWidget์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์ ์ ๋ ฅ์ด ํ์ํ ๋ ๋ํ์์๋ฅผ ํ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Modal / Modeless Dialog๋ก ์์ฑํ๋ ๊ฐ์ฒด์ ๋๋ค.
์ฆ, ๋ฉ์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ QMainWindow๋ฅผ ์ฌ์ฉํ๊ณ , ์ผ๋ฐ์ ์ธ ๋ํ์์๋ Dialog๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์์ ๊ฐ์ด Base class๋ฅผ QMainWindow๋ก ์์ฑํ๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ํ์๋ฉ๋๋ค.
QMainWindow์ผ๋ก ํ๋ก์ ํธ ์์ฑ๋ ๋ชจ์ต
ํ์ผ๋ช ์ด xxx.ui์ธ ํ์ผ์ ๋๋ธ ํด๋ฆญํ๋ฉด Qt Designer๊ฐ ์คํ๋ฉ๋๋ค.
Qt Designer๊ฐ ์คํ๋ ๋ชจ์ต
์ด๊ณณ์์ MFC ํน์ C#์ฒ๋ผ UI ๋ฐฐ์น๋ฅผ ์ ์ฉํ๋ฉด ๋๊ฒ ์ต๋๋ค.
์์๋ก Push Button์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ฐธ๊ณ ๋ก Qt Designer์์๋ UI Control ์ถ๊ฐ ์, ์ปจํธ๋กค์ ์ ํํ ํ Drag & Drop์ผ๋ก ๋ฐฐ์นํ ์ ์์ต๋๋ค.
Push Button์ ์ถ๊ฐํ ๋ชจ์ต
Button์ ๋ณ์ ์ด๋ฆ, ํ ์คํธ, ์์, ํฌ๊ธฐ ๋ฑ์ ์ค์ ์ ์ฐ์ธก์ '์์ฑ ํธ์ง๊ธฐ'์์ ์ค์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ผ๋จ, ์ด๋ฒ ์์๋ Button Click ์ด๋ฒคํธ๋ฅผ ์ฐ๋ํ๋ ๊ฒ์ด๋ฏ๋ก ์์ธํ ์์ฑ ํธ์ง์ ๋์ด๊ฐ๊ธฐ๋ก ํ๊ฒ ์ต๋๋ค.
์ด์ ๋ฒํผ์ ์ถ๊ฐํ์ผ๋ ์ผ์ชฝ ์๋จ์ ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ ์ฅํ๊ณ , ๋ค์ Visual Studio๋ก ๋์์ต๋๋ค.
Qt์์ ์ค์ํ ๊ฐ๋ ์ค์ ํ๋๊ฐ Signal ๊ณผ Slot ์ ๋๋ค.
๊ฐ์๊ธฐ ์ ์ด ์๊ธฐ๋ฅผ ํ๋๋ฉด, MFC์์ ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์์ฑํ๋ฉด Message Map์ ๋ฒํผ ๋ฆฌ์์ค์ ์คํ๋ ํจ์๊ฐ ON_BN_CLICKED ์ ๋ฑ๋ก๋ฉ๋๋ค.
BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication1Dlg::OnBnClickedButton1) // ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ
END_MESSAGE_MAP()
Qt๋ ๋ง์ฐฌ๊ฐ์ง ์ ๋๋ค.
๋ฒํผ์ด ํด๋ฆญ๋๋ค๋ ์ด๋ฒคํธ(Signal) ๊ฐ ๋ฐ์ํ๋ฉด ์ฐ๊ฒฐ๋ ํจ์(Slot) ๊ฐ ์คํ์ด ๋๋ ๋ฐฉ์์ ๋๋ค.
์๊ธฐ๊ฐ ๊ธธ์ด์ก์ต๋๋ค. ํค๋์ ์๋์ ๊ฐ์ด Slot ํจ์๋ฅผ ์ ์ํฉ๋๋ค.
#pragma once
#include <QtWidgets/QMainWindow>
#include <QMessageBox>
#include "ui_QtGuiApplication1.h"
class QtGuiApplication1 : public QMainWindow
{
Q_OBJECT
public:
QtGuiApplication1(QWidget *parent = Q_NULLPTR);
private:
Ui::QtGuiApplication1Class ui;
public slots:
void ButtonClicked();
};
๊ทธ๋ฆฌ๊ณ ์์ค ํ์ผ์๋ ์๋์ ๊ฐ์ด connect ํจ์๋ฅผ ์ฌ์ฉํ ๋ฒํผ ์ด๋ฒคํธ ์ฐ๊ฒฐ๊ณผ, ๋ฒํผ ์ด๋ฒคํธ๊ฐ ์คํ๋ ํจ์๋ฅผ ์ ์ํฉ๋๋ค.
๊ทธ ์ธ Push Button ์ด๋ฒคํธ๋ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
๋งํฌ: https://wiki.qt.io/How_to_Use_QPushButton
#include "QtGuiApplication1.h"
QtGuiApplication1::QtGuiApplication1(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(ButtonClicked()));
}
void QtGuiApplication1::ButtonClicked()
{
QMessageBox::information(this, "Title", "Hello");
}
๋น๋ํ๊ณ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
Button Event ์์ ์คํ ํ๋ฉด
'Programming > Qt' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Qt & Visual Studio] ์ด๋ฏธ์ง ํ์ผ ์ ํํ์ฌ ๊ทธ๋ฆฌ๊ธฐ (0) | 2019.08.19 |
---|---|
[Qt] Visual Studio 2015์์ Qt ์ฌ์ฉํ๊ธฐ (0) | 2019.05.19 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Qt & Visual Studio] ์ด๋ฏธ์ง ํ์ผ ์ ํํ์ฌ ๊ทธ๋ฆฌ๊ธฐ
[Qt & Visual Studio] ์ด๋ฏธ์ง ํ์ผ ์ ํํ์ฌ ๊ทธ๋ฆฌ๊ธฐ
2019.08.19 -
[Qt] Visual Studio 2015์์ Qt ์ฌ์ฉํ๊ธฐ
[Qt] Visual Studio 2015์์ Qt ์ฌ์ฉํ๊ธฐ
2019.05.19