類別

名稱

數據類型

説明

🔧 核心屬性

value

int

控件的當前值

 

minimum, maximum

int

允許的最小值和最大值

 

singleStep

int

點擊按鈕一次的步長值

 

prefix, suffix

QString

顯示在數值前/後的字符串(如"¥", "cm")

 

wrapping

bool

是否循環(達到最大值後繼續增加會跳轉到最小值)

 

specialValueText

QString

當值等於最小值時顯示的特殊文本(如"Off")

 

displayIntegerBase

int

數值顯示的進制基數(如2為二進制,16為十六進制)

 

readOnly

bool

設置控件是否為只讀,用户無法鍵盤輸入但可通過按鈕調整

📢 常用信號

valueChanged(int)

-

最常,數值改變時發射,帶當前整數值

 

textChanged(const QString &)

-

數值改變時發射,帶完整的文本(包括前後綴)

獲取數值

//獲取數值
 int inputValue = ui.spinBox->value();

 設置最大最小值

//設置最大最小值
 // 
 //設置最大值
 ui.spinBox->setMaximum(1000);
 //設置最小值
 ui.spinBox->setMinimum(-2000);
//設置最大最小值,第一個參數是最小值,第二個參數是最大值
ui.spinBox->setRange(200, 600);

設置值

//設置值
    ui.spinBox->setValue(255);

設置進制

//設置進制

    //設置二進制
    ui.spinBox->setDisplayIntegerBase(2);
    //設置十六進制
    ui.spinBox->setDisplayIntegerBase(16);

設置前綴後綴

//設置前綴後綴

    //設置前綴
    ui.spinBox->setPrefix("$");
    //設置後綴
    ui.spinBox->setSuffix("#");

綁定數值改變的事件

💡 信號概述

QSpinBox::valueChanged信號有兩個重載版本 

  • void valueChanged(int i)
  • void valueChanged(const QString &text)

當微調框的數值改變時,這兩個信號都會被髮射。int參數版本直接傳遞新的整數值,而 QString參數版本則傳遞包含前綴後綴的完整文本 

//綁定數值改變的事件

    //第一種
     connect(ui.spinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &QtWidgetsApplication2::SpinValueChanged);

    //第二種
    auto t = connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &QtWidgetsApplication2::SpinValueChanged);
    if (!t)
    {
        QMessageBox::information(this, "tips", "綁定信號與槽失敗");
    }

槽函數

//槽函數
void QtWidgetsApplication2::SpinValueChanged(int a)
{
    QMessageBox::information(this, "tips", QString::number(ui.spinBox->value()));
}

避免在輸入過程中因信號被頻繁觸發而導致的性能問題或邏輯錯誤

優化信號

        如果要輸入50,第一次變動會彈出5,加完0後會彈出50

ui.spinBox->setKeyboardTracking(false);

設置單步步長 

//設置單步步長
  ui.spinBox->setSingleStep(5);

(可選) 啓用加速,當用户長時間按住按鈕時,數值變化會加快

// (可選) 啓用加速,當用户長時間按住按鈕時,數值變化會加快
    ui.spinBox->setAccelerated(true);