QSpinBox使用讲解

本文详细介绍了如何在Qt中使用QSpinBox和QDoubleSpinBox组件进行数值输入与调节,包括设置范围、步长、精度等,并展示了如何通过信号槽连接valueChanged事件。实例演示了如何为这两个控件设置前缀后缀并捕获值的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

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在这个类中被重载。QT5新版的信号槽语法要使用函数指针语法连接到这个信号,需要使用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布局
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值