2012-02-14 188 views

回答

2

您可以繼承QSpinBox並重新實​​現textFromValue,該值負責將值顯示到spinbox窗口小部件。一種可能的實現可以是以下幾點:

QString MySpinBox::textFromValue(int value) 
{ 
    return this->locale()->toString(value); 
} 

使用locale是因爲它會顯示基於用戶的設置的分隔符的最佳途徑。

+0

它工作,TY,但它不插入千位分隔符時,用戶用鍵盤插入一個數字!當用戶將注意力集中在那個SpinBox上時,千位分隔符會插入!我如何解決這個問題?對於糟糕的英語! – 2012-02-14 13:48:29

+0

您可以將'valueChanged'信號與更新文本的自定義插槽連接。請注意,在這個插槽中,您應該暫時阻止信號(使用'blockSignals(true)')以避免無限循環。 – pnezis 2012-02-14 16:12:19

+0

您如何實際更新文字? – Krenair 2017-02-22 06:31:45

1

我知道這是遲到,但這可能會幫助其他人。我用這個更新的千個分隔符

ui->doubleSpinBox->setGroupSeparatorShown(true);

設置屬性它的形式UI

在我QDialog的形式,我用它來更新量帶有千分隔符,

void DialogCashPayment::on_doubleSpinBox_valueChanged(double arg1){ 
    ui->doubleSpinBox->setValue(arg1); 
} 

編輯:

發現一個錯誤時量爲10K以上,光標位置被改變。我不知道如何解決這個問題。也許有人能解決這個問題。