Spin
Nesse tutorial iremos aprender a como fazer uma spin box. Iremos utilizar o QSpinBox, um widget feito para manipula inteiros e conjuntos discretos de valores.
Para começarmos o tutorial, temos o arquivo header, cpp e o main:
spinbox.h
#pragma once
#include <QWidget>
#include <QSpinBox>
class SpinBox : public QWidget {
Q_OBJECT
public:
SpinBox(QWidget *parent = nullptr);
private:
QSpinBox *spinbox;
};
spinbox.cpp
#include <QHBoxLayout>
#include <QLabel>
#include "spinbox.h"
SpinBox::SpinBox(QWidget *parent)
: QWidget(parent) {
auto *hbox = new QHBoxLayout(this);
hbox->setSpacing(15);
spinbox = new QSpinBox(this);
auto *lbl = new QLabel("0", this);
hbox->addWidget(spinbox);
hbox->addWidget(lbl);
connect(spinbox, qOverload(&QSpinBox::valueChanged),
lbl, qOverload(&QLabel::setNum));
}
main.cpp
#include <QApplication>
#include "spinbox.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
SpinBox window;
window.resize(250, 150);
window.setWindowTitle("QSpinBox");
window.show();
return app.exec();
}
Colocamos uma spinbox na janela e conectamos seu signal valueChanged (modificando o valor) ao slot setNum (modificando o número) da QLabel. Precisamos usar o qOverload duas vezes porque tanto o signal quanto o slot estão sobrecarregados. Esse é o trecho do código que faz a mágica:
connect(spinbox, qOverload(&QSpinBox::valueChanged), lbl, qOverload (&QLabel::setNum));
Então temos o resultado: