QT6 Chapter05
1. QCheckBox / QButtonGroup 클래스
(1) QCheckBox
>
체크박스(□) 형태의 위젯.
선택/해제를 할 수 있고, 다중 선택이 가능
>
헤더
#include <QCheckBox>
>
사용 예시
// 부모 위젯 지정
QCheckBox *check = new QCheckBox("자동 저장", this);
// 위치 지정
check->setGeometry(50, 30, 120, 25);
// 시그널 연결 (슬롯 또는 람다)
connect(check, &QCheckBox::stateChanged, this, &MyWidget::onCheckBoxStateChanged);
>
setGeometry() : 체크박스 위치 및 크기 설정
void setGeometry(int x, int y, int w, int h);
void setGeometry(const QRect &rect);
(2) QButtonGroup
>
여러 개의 버튼(라디오 버튼, 체크박스 등)을 그룹으로 묶어서 관리하는 클래스
자체적으로 UI를 표시하지 않음
>
헤더
#include <QButtonGroup>
>
사용 예시
QButtonGroup *group = new QButtonGroup(this);
QRadioButton *rb1 = new QRadioButton("옵션 1", this);
QRadioButton *rb2 = new QRadioButton("옵션 2", this);
group->addButton(rb1, 1);
group->addButton(rb2, 2);
group->setExclusive(true);
>
addButtom() : 버튼 추가
void addButton(QAbstractButton *button); // QAbstractButton의 파생 클래스만 인자로 사용 가능
>
setExclusive() : 중복 선택 여부
void QButtonGroup::setExclusive(bool exclusive);
// setExclusive(true) 인 경우 중복 불가능(하나만 선택)
// setExclusive(false) 인 경우 중복 가능(여러 버튼 선택)
2. QComboBox 클래스
>
드롭다운 목록과 선택 상자를 제공하는 위젯.
사용자가 목록에서 하나를 선택하거나 직접 입력할 수도 있음
>
헤더
#include <QComboBox>
>
사용 예시
QComboBox *combo = new QComboBox(this);
combo->setGeometry(50, 30, 150, 25);
combo->addItem("사과");
combo->addItem("바나나");
combo->addItem(QIcon("apple.png"), "사과", 101);
>
setGeometry() : 콤보박스 위치 및 크기 설정
void setGeometry(int x, int y, int w, int h);
void setGeometry(const QRect &rect);
>
addItem() : 콤보박스에 항목 추가
// non 아이콘
void addItem(const QString &text, const QVariant &userData = QVariant());
// 아이콘
void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant());

3. QCommandLinkButton 클래스
>
Windows Vista 스타일의 명령 링크 버튼(Command Link Button) 위젯.
기본 버튼보다 크고, 제목과 설명(서브 텍스트)을 함께 표시 가능.
주로 “다음 단계”나 “권장 작업”을 강조하는 UI에 사용.
>
헤더
#include <QCommandLinkButton>
>
사용 예시
QCommandLinkButton *btn = new QCommandLinkButton("시작", "이 작업을 실행합니다", this);
btn->setGeometry(50, 50, 250, 60);
btn->setFlat(true); // 평면 스타일 적용
>
setFlat() : 버튼의 외곽선, 배경표시 여부 결정
void setFlat(bool flat);

4. QDate / QDateEdit 클래스
(1) QDate
>
날짜(연,월,일)를 다루는 클래스.
날짜 생성, 비교, 연산, 포맷 변환 등을 지원.
UI 위젯이 아닌 데이터 클래스임.
>
헤더
#include <QDate>
>
사용 예시
// 특정 날짜 생성 (년, 월, 일)
QDate date = QDate(2025, 8, 6);
// 현재 날짜 얻기
QDate today = QDate::currentDate();
(2) QDateEdit
>
날짜를 입력/선택하는 UI 위젯.
QDate 기반이며, 달력 팝업을 통해 날짜 선택 가능.
사용자가 날짜를 편리하게 수정할 수 있도록 지원.
>
헤더
#include <QDateEdit>
>
사용 예시
// 초기화 1
QDateEdit *dateEdit = new QDateEdit(this);
// 초기화 2(년 단위)
QDate date = QDate(2023, 1, 1);
QDateEdit *dateEdit = new QDateEdit(date.addYears(2), this); // 2025-01-01
dateEdit -> setGeometry(10, 10, 140, 40);
// 초기화 3(월 단위)
QDate date = QDate(2023, 1, 1);
QDateEdit *dateEdit = new QDateEdit(date.addMonths(5), this); // 2023-06-01
dateEdit -> setGeometry(10, 10, 140, 40);
// 초기화 3(월 단위)
QDate date = QDate(2023, 1, 1);
QDateEdit *dateEdit = new QDateEdit(date.addDays(15)), this); // 2023-01-16
dateEdit -> setGeometry(10, 10, 140, 40);

5. QTime / QTimeEdit 클래스
(1) QTime
>
시각(시, 분, 초, 밀리초) 데이터를 다루는 클래스.
UI 위젯이 아닌, 시간 연산·비교·포맷 변환 등에 사용.
날짜 정보는 포함하지 않음.
>
헤더
#include <QTime>
>
사용 예시
// 현재 시간 얻기
QTime now = QTime::currentTime();
// 특정 시간 생성 (시, 분, 초)
QTime t(14, 30, 0); // 14:30:00
(2) QTimeEdit
>
시간(시, 분, 초)을 입력·선택할 수 있는 UI 위젯.
QTime 기반으로 동작.
사용자가 키보드나 스핀 박스를 이용해 시간 조절 가능.
>
헤더
#include <QTimeEdit>
>
사용 예시
// 초기화 1
QTimeEdit *qte = new QtimeEdit(this);
// 초기화 2(설정 시간을 초기화)
QTime ti = QTime(6, 24, 55);
QDateEdit *dateEdit = new QDateEdit(ti, this);
dateEdit -> setGeometry(10, 30, 150, 30)
// 초기화 3(시간을 더 해서 초기화)
QTime ti = QTime(6, 24, 55);
QDateEdit *dateEdit = new QDateEdit(ti.addSecs(2), this); // 6h 24m 57s
dateEdit -> setGeometry(10, 30, 150, 30)

6. QDateTime / QDateTimeEdit 클래스
(1) QDateTime
>
날짜(QDate)와 시간(QTime) 정보를 모두 다루는 클래스.
현재 날짜/시간 얻기, 비교, 포맷 변환, 연산(더하기·빼기) 가능.
UI 위젯이 아닌 데이터 처리용 클래스.
>
헤더
#include <QDateTime>
>
사용 예시
// 현재 날짜, 시간 얻기
QDateTime now = QDateTime::currentDateTime();
// 특정 시간 생성 (시, 분, 초)
QDate date(2025, 8, 6);
QTime time(14, 30, 0);
QDateTime dt(date, time); // 2025년 08월 06일 14시 30분 00초
(2) QDateTimeEdit
>
날짜와 시간을 함께 선택/입력하는 UI 위젯.
내부적으로 QDateTime을 사용.
키보드나 스핀 박스를 통해 날짜와 시간 모두 조절 가능.
>
헤더
#include <QDateTimeEdit>
>
사용 예시
QDateTimeEdit *dtEdit = new QDateTimeEdit(this);
// 현재 날짜/시간으로 초기화
dtEdit->setDateTime(QDateTime::currentDateTime());
// 위치와 크기 설정
dtEdit->setGeometry(50, 30, 180, 25);
// 표시 형식 지정
dtEdit->setDisplayFormat("yyyy-MM-dd HH:mm:ss");
// 달력 팝업 활성화
dtEdit->setCalendarPopup(true);

7. QDial
>
원형 다이얼(노브) 형태의 값 선택 위젯.
마우스 드래그 또는 키보드로 값을 변경 가능.
QSlider와 기능적으로 비슷하지만 UI가 원형.
범위, 현재 값, 단계(step) 등을 설정할 수 있음.
>
헤더
#include <QDial>
>
사용 예시
QDial *dial = new QDial(this);
// 위치와 크기 설정
dial->setGeometry(50, 30, 100, 100);
// 최소/최대 값 설정
dial->setMinimum(0);
dial->setMaximum(100);
// 초기 값 설정
dial->setValue(50);
// 값 변경 시그널 연결
connect(dial, &QDial::valueChanged, this, [](int value){
qDebug() << "다이얼 값:" << value;
});

8. QSpinBox / QDoubleSpinBox
(1) QSpinBox(int)
>
정수 값을 스핀 버튼(▲▼)으로 조절할 수 있는 입력 위젯.
범위와 증가 단위를 지정 가능.
키보드로도 직접 값 입력 가능.
>
헤더
#include <QSpinBox>
>
사용 예시
QSpinBox *spin = new QSpinBox(this);
// 위치와 크기
spin->setGeometry(50, 30, 100, 25);
// 범위 설정
spin->setRange(0, 100);
// 증가 단위
spin->setSingleStep(5);
// 초기 값
spin->setValue(50);
// 값 변경 시그널 연결
connect(spin, QOverload<int>::of(&QSpinBox::valueChanged), this, [](int value){
qDebug() << "정수 값:" << value;
});
(2) QDoubleSpinBox(double)
>
실수(소수점) 값을 스핀 버튼으로 조절하는 위젯.
QSpinBox와 거의 동일하지만, 소수점 자리수와 증가 단위를 소수로 지정 가능.
>
헤더
#include <QDoubleSpinBox>
>
사용 예시
QDoubleSpinBox *dspin = new QDoubleSpinBox(this);
// 위치와 크기
dspin->setGeometry(50, 70, 100, 25);
// 범위 설정
dspin->setRange(0.0, 10.0);
// 소수점 자릿수
dspin->setDecimals(2);
// 증가 단위
dspin->setSingleStep(0.25);
// 초기 값
dspin->setValue(5.50);
// 값 변경 시그널 연결
connect(dspin, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, [](double value){
qDebug() << "실수 값:" << value;
});

9. QPushButton / QFocusFrame
(1) QPushButton
>
클릭 가능한 기본 버튼 위젯.
텍스트나 아이콘 표시 가능, 클릭 시 clicked() 시그널 발생.
기본 버튼(Default)이나 취소 버튼(Escape key)로 지정 가능.
>
헤더
#include <QPushButton>
>
사용 예시
QPushButton *btn = new QPushButton("클릭하세요", this);
// 위치와 크기 설정
btn->setGeometry(50, 30, 100, 30);
// 클릭 시 동작 연결
connect(btn, &QPushButton::clicked, this, [](){
qDebug() << "버튼 클릭됨";
});
(2) QFocusFrame
>
특정 위젯에 포커스가 갈 때 그 위젯을 강조하는 테두리 위젯.
보통 UI 시각 효과로 사용.
setWidget()을 통해 감싸줄 위젯 지정.
>
헤더
#include <QFocusFrame>
>
사용 예시
// QPushButton 생성
QPushButton *btn = new QPushButton("포커스 테스트", this);
btn->setGeometry(50, 80, 120, 30);
// QFocusFrame 생성
QFocusFrame *frame = new QFocusFrame(this);
frame->setWidget(btn); // 버튼에 포커스 프레임 적용
frame->setAutoFillBackground(true);

10. QFontComboBox
>
시스템에 설치된 폰트 목록을 드롭다운 형태로 보여주는 콤보 박스 위젯.
사용자가 글꼴을 선택하면 currentFontChanged() 시그널 발생.
글꼴 필터링(고정폭, 비고정폭, 글자체 스타일 등) 가능.
>
헤더
#include <QFontComboBox>
>
사용 예시
QFontComboBox *fontBox = new QFontComboBox(this);
// 위치와 크기 설정
fontBox->setGeometry(50, 30, 200, 30);
// 폰트 변경 시 동작 연결
connect(fontBox, &QFontComboBox::currentFontChanged, this, [](const QFont &font){
qDebug() << "선택한 폰트:" << font.family();
});

11. QLabel / QLCDNumber
(1) QLabel
>
텍스트나 이미지를 표시하는 간단한 출력 위젯.
사용자 입력을 받지 않고 출력 전용으로 주로 사용.
HTML 태그나 스타일시트를 이용해 서식 지정 가능.
>
헤더
#include <QLabel>
>
사용 예시
QLabel *label = new QLabel("안녕하세요", this);
// 위치와 크기
label->setGeometry(50, 30, 200, 30);
// 가운데 정렬
label->setAlignment(Qt::AlignCenter);
// HTML 태그 사용
label->setText("<font color='red'>빨간 글씨</font>");
(2) QLCDNumber
>
디지털 시계 스타일의 숫자 표시 위젯.
정수, 실수, 시계 표시 가능.
기본적으로 7-세그먼트(Seven-segment) LED 모양.
>
헤더
#include <QLCDNumber>
>
사용 예시
QLCDNumber *lcd = new QLCDNumber(this);
// 위치와 크기
lcd->setGeometry(50, 80, 150, 50);
// 자리수 설정
lcd->setDigitCount(6);
// 정수 출력
lcd->display(123);
// 소수 출력
lcd->display(3.14);

12. QLineEdit
>
한 줄 텍스트를 입력할 수 있는 기본 입력 위젯.
일반 텍스트, 비밀번호 입력, 숫자 입력 등 다양한 모드 가능.
입력 제한, 자리 표시 텍스트(placeholder), 자동 완성 기능 지원.
>
헤더
#include <QLineEdit>
>
사용 예시
QLineEdit *lineEdit = new QLineEdit(this);
// 위치와 크기
lineEdit->setGeometry(50, 30, 200, 30);
// 초기 텍스트
lineEdit->setText("기본 텍스트");
// 자리 표시 텍스트
lineEdit->setPlaceholderText("여기에 입력하세요");
// 입력 마스크(전화번호 형식)
lineEdit->setInputMask("000-0000-0000;_");
// 텍스트 변경 시그널 연결
connect(lineEdit, &QLineEdit::textChanged, this, [](const QString &text){
qDebug() << "입력 값:" << text;
});

'LMS 7 > 개발일지' 카테고리의 다른 글
| 25.08.08 학습개발일지 / QT6 Chapter06, 09 (1) | 2025.08.11 |
|---|---|
| 25.08.07 학습개발일지 / QT6 Chapter05(2) (2) | 2025.08.11 |
| 25.08.04 학습개발일지 / C++ Study6(2) (4) | 2025.08.04 |
| 25.08.02 학습개발일지 / C++ Study 6(1) (0) | 2025.08.02 |
| 25.08.01 학습개발일지 C++ Study5 (2) | 2025.08.01 |