2012-02-14 2 views

ответ

2

Вы можете подклассифицировать QSpinBox и переопределить textFromValue, который отвечает за отображение значения виджет-панели. Возможная реализация может быть следующей:

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

Использование locale это лучший способ, так как он будет отображать разделитель на основе настроек пользователя.

+0

Это сработало, но оно не вставляет тысячи разделителей, когда пользователь вводит номер с клавиатурой! когда пользователь фокусируется, чем SpinBox, тогда будет вставляться тысяча разделителей! как я могу это исправить? sory для плохого английского! –

+0

Вы можете подключить сигнал 'valueChanged' с пользовательским слотом, который обновляет текст. Обратите внимание, что в этом слоте вы должны блокировать сигналы (используйте 'blockSignals (true)'), чтобы избежать бесконечного цикла. – pnezis

+0

Как вы вообще обновляете текст? – Krenair

1

Я знаю, что это поздно, но это может помочь другим людям. я использовал это, чтобы обновить замостить

ui->doubleSpinBox->setGroupSeparatorShown(true);

или

установить свойство его в виде щ

В моей QDialog форме я использовал это, чтобы обновить количество с тысячами разделителей,

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

EDIT:

Обнаружена ошибка, когда сумма составляет 10k выше, позиция курсора изменяется. Я не знаю, как это исправить. Может быть, кто-то может это исправить.