25.08.06 학습개발일지 / QT6 Chapter 05(1)

2025. 8. 10. 17:19·LMS 7/개발일지

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
'LMS 7/개발일지' 카테고리의 다른 글
  • 25.08.08 학습개발일지 / QT6 Chapter06, 09
  • 25.08.07 학습개발일지 / QT6 Chapter05(2)
  • 25.08.04 학습개발일지 / C++ Study6(2)
  • 25.08.02 학습개발일지 / C++ Study 6(1)
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
25.08.06 학습개발일지 / QT6 Chapter 05(1)
상단으로

티스토리툴바