QT6 Chapter 10
<widget.ui>

<widget.h>
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
private slots:
void slider1_valueChanged(int value);
void slider2_valueChanged(int value);
void slider3_valueChanged(int value);
};
#endif // WIDGET_H
>
#include <QWidget>
: Qt의 기본 위젯 클래스 Qwidget 헤더파일
>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
: Qt namespace 내에 Ui 클래스를 정의
>
class Widget : public QWidget
: QWidget을 상속한 Widget 클래스 정의
>
Q_OBJECT
: 시그널(Signal) & 슬롯(Slot) 매커니즘을 사용하기 위한 매크로(필수요소)
>
public:
Widget(QWidget *parent = nullptr);
~Widget();
: 생성자와 소멸자
>
private:
Ui::Widget *ui;
: Qt Designer를 사용하여 만든 UI를 제어하는 멤버변수(ui 포인터를 사용하여 접근)
>
private slots:
void slider1_valueChanged(int value);
void slider2_valueChanged(int value);
void slider3_valueChanged(int value);
: 슬롯(Slot)함수, 시그널을 통해 행동할 함수들
<widget.cpp>
#include "widget.h"
#include "./ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->slider1, SIGNAL(valueChanged(int)),
this, SLOT(slider1_valueChanged(int)));
connect(ui->slider2, SIGNAL(valueChanged(int)),
this, SLOT(slider2_valueChanged(int)));
connect(ui->slider3, SIGNAL(valueChanged(int)),
this, SLOT(slider3_valueChanged(int)));
}
Widget::~Widget()
{
delete ui;
}
void Widget::slider1_valueChanged(int value)
{
ui->spinBox1->setValue(value);
}
void Widget::slider2_valueChanged(int value)
{
ui->spinBox2->setValue(value);
}
void Widget::slider3_valueChanged(int value)
{
ui->spinBox3->setValue(value);
}
>
Widget::Widget(QWidget *parent)
ui(new Ui::Widget)
: 생성자, ui 포인터를 통해 Qt Designer로 생성한 UI를 힙에 동적할당
>
ui->setupUi(this);
: 현재 위젯(this)에 UI를 설정함
>
connect(ui->slider1, SIGNAL(valueChanged(int)),
this, SLOT(slider1_valueChanged(int)));
connect(ui->slider2, SIGNAL(valueChanged(int)),
this, SLOT(slider2_valueChanged(int)));
connect(ui->slider3, SIGNAL(valueChanged(int)),
this, SLOT(slider3_valueChanged(int)));
: ui->sliderN 위젯에서 valueChange(int) 시그널이 발생하면,
현재 위젯(this)의 sliderN_valueChanged 슬롯 함수를 호출하도록 연결함
>
Widget::~Widget()
{
delete ui;
}
: 소멸자
>
void Widget::slider1_valueChanged(int value)
{
ui->spinBox1->setValue(value);
}
void Widget::slider2_valueChanged(int value)
{
ui->spinBox2->setValue(value);
}
void Widget::slider3_valueChanged(int value)
{
ui->spinBox3->setValue(value);
}
: 슬롯 함수들, connect의 시그널을 통해 발생한 int 값을 인자로 삼아 호출됨(connect의 구조상 SIGNAL과 SLOT의 인자의 타입과 개수는 같아야 함)
'LMS 7 > 개발일지' 카테고리의 다른 글
| 25.08.13 / QT6 개인 프로젝트 1 (4) | 2025.08.13 |
|---|---|
| 25.08.11 학습개발일지 / QT6 Chapter26, 28 (3) | 2025.08.13 |
| 25.08.08 학습개발일지 / QT6 Chapter06, 09 (1) | 2025.08.11 |
| 25.08.07 학습개발일지 / QT6 Chapter05(2) (2) | 2025.08.11 |
| 25.08.06 학습개발일지 / QT6 Chapter 05(1) (2) | 2025.08.10 |