2012-02-14 133 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以上,光标位置被改变。我不知道如何解决这个问题。也许有人能解决这个问题。