서론

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