只读展示: 可以用于只读展示某个数值,不允许用户修改。
方法 | 描述 |
---|---|
QSpinBox(QWidget *parent = nullptr) | 构造函数,创建一个整数微调框。 |
int value() const | 获取当前微调框中的整数值。 |
void setValue(int value) | 设置微调框的整数值。 |
int minimum() const | 获取微调框的最小值。 |
void setMinimum(int min) | 设置微调框的最小值。 |
int maximum() const | 获取微调框的最大值。 |
void setMaximum(int max) | 设置微调框的最大值。 |
int singleStep() const | 获取单步步进值,即微调框在每次增减操作时的变化量。 |
void setSingleStep(int step) | 设置单步步进值。 |
int prefix() const | 获取前缀(显示在值之前的文本)。 |
void setPrefix(const QString &prefix) | 设置前缀。 |
int suffix() const | 获取后缀(显示在值之后的文本)。 |
void setSuffix(const QString &suffix) | 设置后缀。 |
QString cleanText() const | 获取文本表示的干净值,即不包含前缀和后缀的纯文本值。 |
bool wrapping() const | 检查微调框是否启用了循环,即在达到最大或最小值时是否绕回。 |
void setWrapping(bool on) | 启用或禁用微调框的循环。 |
void stepUp() | 将微调框的值增加一个单步步进值。 |
void stepDown() | 将微调框的值减少一个单步步进值。 |
void setAccelerated(bool on) | 启用或禁用加速,即按住上下箭头时值的变化速度是否逐渐加快。 |
bool isAccelerated() const | 检查是否启用了加速。 |
void setReadOnly(bool ro) | 设置微调框为只读模式,禁止用户编辑值。 |
bool isReadOnly() const | 检查微调框是否为只读模式。 |
void setAlignment(Qt::Alignment align) | 设置微调框中文本的对齐方式。 |
Qt::Alignment alignment() const | 获取微调框中文本的对齐方式。 |
void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs) | 设置增减按钮的显示方式。 |
QAbstractSpinBox::ButtonSymbols buttonSymbols() const | 获取增减按钮的显示方式。 |
这些方法涵盖了QSpinBox类中一些常用的设置和获取整数微调框属性的功能。
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 在组件后方设置$特殊符号 ui->spinBox->setSuffix(" $"); ui->spinBox_2->setSuffix(" $"); ui->doubleSpinBox->setSuffix(" $"); // 设置显示精度 ui->doubleSpinBox->setDecimals(6); } MainWindow::~MainWindow() { delete ui; } // 堆代码 duidaima.com // 触发计算流程 void MainWindow::on_pushButton_clicked() { int x = ui->spinBox->value(); int y = ui->spinBox_2->value(); double total = x+y; // 设置SpinBox数值(设置时无需转换) ui->doubleSpinBox->setValue(total); }我们继续在SpinBox的基础上改进,如上代码中每次都需要点击计算按钮才能出结果,此时的需求是当SpinBox中的参数发生变化时自定的完成计算,这里就需要用到信号和槽了,当SpinBox被修改后,自动触发计算信号实现计算。该需求很容易被实现,只需要将信号绑定到特定的槽函数上即可,核心代码如下所示:
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 在组件后方设置$特殊符号 ui->spinBox->setSuffix(" $"); ui->spinBox_2->setSuffix(" $"); ui->doubleSpinBox->setSuffix(" $"); // 设置显示精度 ui->doubleSpinBox->setDecimals(6); // 始终不可编辑 ui->doubleSpinBox->setEnabled(false); // 将数量和单价两个SpinBox的valueChanged()信号与on_pushButton_clicked()槽关联 // 只要spinBox中的内容发生变化,则立即触发按钮完成计算 QObject::connect(ui->spinBox,SIGNAL(valueChanged(int)),this,SLOT(on_pushButton_clicked())); QObject::connect(ui->spinBox_2,SIGNAL(valueChanged(int)),this,SLOT(on_pushButton_clicked())); QObject::connect(ui->doubleSpinBox,SIGNAL(valueChanged(double)),this,SLOT(on_pushButton_clicked())); }
编译并运行上述程序,当我们的两个选择框其中一个发生变化时,都会自动触发信号与on_pushButton_clicked()实现计算,效果图如下: