이번 글에서는 QSpinBox와 QDoubleSpniBox를 사용하는 방법에 대해 알아보겠습니다.
UI
아래와 같이 ui 파일을 구성해줍니다. spin이라 검색하면 SpinBox, Double Spin Box가 표시됩니다.
그 다음 아래처럼 objectName을 설정해줍니다.
QSpinBox
우선 QSpinBox부터 만들어보겠습니다. 아래와 같이 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;
public slots:
void valueChangedSpinBox(int value); // QSpinBox 슬롯함수
};
#endif // WIDGET_H
그 다음 Widget.cpp에 아래와 같이 추가해줍니다.
#include "Widget.h"
#include "ui_Widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->spinBox->setRange(-100, 100); // 범위
ui->spinBox->setValue(0); // 값
ui->spinBox->setPrefix(QString("Pre-")); // Prefix
ui->spinBox->setSuffix(QString("-Suffix")); // Suffix
ui->spinBox->setDisplayIntegerBase(16); // 진수
ui->spinBox->setSingleStep(5); // 증감 되는 크기
connect(ui->spinBox, SIGNAL(valueChanged(int)), this, SLOT(valueChangedSpinBox(int))); // QSpinBox 시그널&슬롯 연결
}
Widget::~Widget()
{
delete ui;
}
void Widget::valueChangedSpinBox(int value)
{
QString str = QString("spinbox value: %1").arg(value);
ui->label_spinbox->setText(str);
}
실행 하면 아래와 같이 실행합니다.
QDoubleSpinBox
그 다음 QDoubleSpinBox를 코딩하겠습니다. Double Spin Box는 Spin Box와 비슷하지만 Spin Box는 정수(Integer)를 표시하고 Double Spin Box는 실수(Real Number)를 표시하고 있습니다.
QDoubleSpinBox 시그널 함수를 아래처럼 만들어줍니다.
#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;
public slots:
void valueChangedSpinBox(int value); // QSpinBox 슬롯함수
void valueChangedDoubleSpinBox(double value); // QDoubleSpinBox 슬롯함수
};
#endif // WIDGET_H
그 다음 Widget.cpp에 아래와 같이 코딩합니다.
#include "Widget.h"
#include "ui_Widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->spinBox->setRange(-100, 100); // 범위
ui->spinBox->setValue(0); // 값
ui->spinBox->setPrefix(QString("Pre-")); // Prefix
ui->spinBox->setSuffix(QString("-Suffix")); // Suffix
ui->spinBox->setDisplayIntegerBase(16); // 진수
ui->spinBox->setSingleStep(5); // 증감 되는 크기
connect(ui->spinBox, SIGNAL(valueChanged(int)), this, SLOT(valueChangedSpinBox(int))); // 시그널&슬롯 연결
ui->doubleSpinBox->setRange(0.000, 100.000); // 범위
ui->doubleSpinBox->setValue(0.000); // 값
ui->doubleSpinBox->setPrefix(QString("Pre ")); // Prefix
ui->doubleSpinBox->setSuffix(QString(" Suffix")); // Suffix
ui->doubleSpinBox->setDecimals(2); // 소수점 자리수
ui->doubleSpinBox->setSingleStep(0.05); // 증감 되는 크기
connect(ui->doubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(valueChangedDoubleSpinBox(double))); // 시그널&슬롯 연결
}
Widget::~Widget()
{
delete ui;
}
void Widget::valueChangedSpinBox(int value)
{
QString str = QString("spinbox value: %1").arg(value);
ui->label_spinbox->setText(str);
}
void Widget::valueChangedDoubleSpinBox(double value)
{
QString str = QString("doublespinbox value: %1").arg(value);
ui->label_doublespinbox->setText(str);
}
실행하면 아래처럼 실수에 대해 표시를 합니다.