|
類別
|
名稱
|
數據類型 |
説明
|
|
🔧 核心屬性 |
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);