当前位置: 首页 > article >正文

qt QDoubleSpinBox详解

1、概述

QDoubleSpinBox是Qt框架中的一个控件,专门用于浮点数(即小数)的输入和调节。它提供了一个用户界面元素,允许用户在预设的范围内通过拖动滑块、点击箭头或使用键盘来递增或递减浮点数值。QDoubleSpinBox通常用于需要精确数值输入的场景,如科学计算、数据分析、金融应用以及图形界面中的数值设置等。

2、重要方法

QDoubleSpinBox类提供了多种方法来配置和控制其行为:

  • setRange(double minimum, double maximum):设置QDoubleSpinBox允许的最小值和最大值。
  • setMinimum(double min) 和 setMaximum(double max):分别设置QDoubleSpinBox的最小值和最大值。
  • setValue(double value):设置QDoubleSpinBox的当前值。
  • value():获取QDoubleSpinBox的当前值。
  • setSingleStep(double step):设置每次点击箭头或按键时值的变化量。
  • setDecimals(int decimals):设置允许输入的小数的位数。
  • setPrefix(const QString &prefix) 和 setSuffix(const QString &suffix):设置QDoubleSpinBox显示值的前缀和后缀,用于显示额外的信息,如货币符号或单位。
  • setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs):设置QDoubleSpinBox中的按钮符号,例如向上/向下箭头、加号/减号或无按钮。
  • setReadOnly(bool readOnly):设置QDoubleSpinBox是否为只读模式。
3、重要信号

QDoubleSpinBox类也提供了几个重要的信号,用于在值改变时通知开发者:

  • valueChanged(double value):当QDoubleSpinBox的值改变时发出。这个信号携带新的浮点数值作为参数。
  • valueChanged(const QString &text):这是valueChanged信号的另一个重载版本,它携带一个表示新值的字符串作为参数。
  • editingFinished():当用户完成编辑QDoubleSpinBox的值时发出。这个信号不携带任何参数,表明用户已经完成了对值的编辑。
#include <QApplication>  
#include <QWidget>  
#include <QVBoxLayout>  
#include <QDoubleSpinBox>  
#include <QLabel>  
#include <QDebug>  
  
class MyWidget : public QWidget {  
    Q_OBJECT  
  
public:  
    MyWidget(QWidget *parent = nullptr) : QWidget(parent) {  
        QVBoxLayout *layout = new QVBoxLayout(this);  
  
        QDoubleSpinBox *doubleSpinBox = new QDoubleSpinBox(this);  
        doubleSpinBox->setRange(0.0, 100.0); // 设置范围  
        doubleSpinBox->setSingleStep(1.0); // 设置步长  
        doubleSpinBox->setDecimals(2); // 设置小数位数  
        doubleSpinBox->setValue(50.0); // 设置初始值  
  
        QLabel *label = new QLabel("当前值: 50.00", this);  
  
        // 连接valueChanged信号到槽函数  
        connect(doubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(onDoubleSpinBoxValueChanged(double)));  
  
        // 更新标签的初始值  
        updateLabel(doubleSpinBox->value());  
  
        layout->addWidget(doubleSpinBox);  
        layout->addWidget(label);  
  
        setLayout(layout);  
    }  
  
public slots:  
    void onDoubleSpinBoxValueChanged(double value) {  
        qDebug() << "DoubleSpinBox值改变:" << value;  
        updateLabel(value);  
    }  
  
private:  
    void updateLabel(double value) {  
        QLabel *label = findChild<QLabel*>(); // 假设只有一个QLabel  
        if (label) {  
            label->setText("当前值:" + QString::number(value, 'f', 2)); // 保留两位小数  
        }  
    }  
};  
  
int main(int argc, char *argv[]) {  
    QApplication app(argc, argv);  
  
    MyWidget widget;  
    widget.show();  
  
    return app.exec();  
}  

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/a/374833.html

相关文章:

  • 【 纷享销客-注册安全分析报告-无验证方式导致安全隐患】
  • LLMs在股票投资组合崩溃中的时间关系推理
  • 利用AWS服务轻松迁移数据上云
  • 硬件在环仿真建模之电路拓扑建模与数学建模
  • Halcon 2D测量Metrology找线/圆/矩形/椭圆
  • Python | Leetcode Python题解之第522题最长特殊序列II
  • 第15课 算法(下)
  • 使用 Cloudreve 搭建你的专属个人网盘
  • 分布式 ID 生成策略(一)
  • 如何提高社媒品牌知名度,3个增加曝光的实操方法
  • 微信小程序服务通知
  • 【HarmonyOS NEXT】在 HarmonyOS NEXT 中实现优雅的加载动画
  • python 五子棋小游戏
  • GIN 反向代理功能
  • C/C++ 每日一练:二叉树的先序遍历
  • Webserver(2.6)信号
  • 信号完整性SI总结【小登培训】
  • OpenCV基础知识
  • DB-GPT系列(二):DB-GPT部署(镜像一键部署、源码部署)
  • C++ 代码工程化
  • 微信小程序,打开新的项目,调试遇见[ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json
  • 【行业应用-工业防爆】本安型工业防爆网关,实现安全高效的数据传输与监控
  • 如何解决docker镜像下载失败问题
  • nfs作业
  • Docker | 容器数据卷在docker中的角色:持久化存储
  • WebSocket简单使用