序章
QSpinBoxを使用すると、ユーザーは上/下ボタンをクリックするか、キーボードの上/下を押して現在表示されている値を増減することにより、値を調整できます。ユーザーは手動で値を入力することもできます。整数にはQSpinBoxを使用し、浮動小数点値にはQDoubleSpinBoxを使用します。
一般的なAPI
最小値を設定する
void setMinimum()
最大値を設定する
void setMaximum();
現在の値を設定
void setValue();
セット精度
void setDecimals()
ステップを設定します
void setSingleStep();
プレフィックスを設定する
void setSuffix();
接尾辞を設定する
void setPrefix()
値変更信号
void valueChanged(int i)
void valueChanged(const QString &text)
このクラスでは、シグナルvalueChangedがオーバーロードされていることに注意してください。関数ポインタ構文を使用してこのシグナルに接続するには、次の例に示すように、static_castを使用してポインタをキャストする必要があります。
connect(ui->spinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
[=](int i){
/* ... */
});
connect(ui->doubleSpinBox, static_cast<void(QDoubleSpinBox::*)(const QString &)>(&QDoubleSpinBox::valueChanged),
[=](const QString &text){
/* ... */
});
効果の例:
.hファイル
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//设置后缀
ui->spinBox->setPrefix(QStringLiteral("$"));
//设置最小值
ui->spinBox->setMinimum(0);
//设置最大值
ui->spinBox->setMaximum(1000);
//设置当前值
ui->spinBox->setValue(40);
//设置步距
ui->spinBox->setSingleStep(1);
//设置前缀
ui->doubleSpinBox->setSuffix(QStringLiteral("℃"));
//设置最小值
ui->doubleSpinBox->setMinimum(-100);
//设置最大值
ui->doubleSpinBox->setMaximum(50);
//设置当前值
ui->doubleSpinBox->setValue(26.7);
//设置步距
ui->doubleSpinBox->setSingleStep(0.1);
//设置精度
ui->doubleSpinBox->setDecimals(2);
connect(ui->spinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
[=](int i){
QString str = QString("QSpinBox value changed:%1").arg(i);
ui->textEdit->append(str);
});
connect(ui->doubleSpinBox, static_cast<void(QDoubleSpinBox::*)(const QString &)>(&QDoubleSpinBox::valueChanged),
[=](const QString &text){
QString str = QString("QDoubleSpinBox value changed:%1").arg(text);
ui->textEdit->append(str);
});
}
Widget::~Widget()
{
delete ui;
}
UIレイアウト