서론
QSlider와 QSpinBox를 사용하여 connect를 연습해보자.
horizontalLayout을 사용하여 총 3쌍을 배치하였다.
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
slot 함수에는 slider의 변화 값을 변경해주는 함수를 선언해준다.
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);
}
connect
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)));
현재 connect 코드의 함수 인자를 Old Style 형태로 사용했다.
만약 New Style을 사용하면 "no matching member function for call to 'connect'"라는 에러가 발생한다.
그 이유는 QSpinBox에서 제공하는 valueChanged() 멤버 함수는 Overloaded된 멤버 함수로
int형과 QString 두 가지 멤버 함수를 제공하기 때문이다.
QSpinBox 함수
void valueChanged(int i)
void valueChanged(const QString &text)
결과
'🌠Development > QT' 카테고리의 다른 글
QT - Dialog(QInputDialog) (0) | 2024.07.12 |
---|---|
QT - Dialog (0) | 2024.07.12 |
QT - Signal and Slot (2) (0) | 2024.07.12 |
QT - Signal and Slot (1) (0) | 2024.07.11 |
QT - Layout (1) | 2024.07.11 |