С QSpinBox можно отображать тысячу разделителей числа, когда пользователь вводит его , как 10 000 Каков наилучший способ сделать это?Разделитель QSpinBox тыс.
3
A
ответ
2
Вы можете подклассифицировать QSpinBox
и переопределить textFromValue
, который отвечает за отображение значения виджет-панели. Возможная реализация может быть следующей:
QString MySpinBox::textFromValue(int value)
{
return this->locale()->toString(value);
}
Использование locale это лучший способ, так как он будет отображать разделитель на основе настроек пользователя.
1
Я знаю, что это поздно, но это может помочь другим людям. я использовал это, чтобы обновить замостить
ui->doubleSpinBox->setGroupSeparatorShown(true);
или
установить свойство его в виде щ
В моей QDialog форме я использовал это, чтобы обновить количество с тысячами разделителей,
void DialogCashPayment::on_doubleSpinBox_valueChanged(double arg1){
ui->doubleSpinBox->setValue(arg1);
}
EDIT:
Обнаружена ошибка, когда сумма составляет 10k выше, позиция курсора изменяется. Я не знаю, как это исправить. Может быть, кто-то может это исправить.
Это сработало, но оно не вставляет тысячи разделителей, когда пользователь вводит номер с клавиатурой! когда пользователь фокусируется, чем SpinBox, тогда будет вставляться тысяча разделителей! как я могу это исправить? sory для плохого английского! –
Вы можете подключить сигнал 'valueChanged' с пользовательским слотом, который обновляет текст. Обратите внимание, что в этом слоте вы должны блокировать сигналы (используйте 'blockSignals (true)'), чтобы избежать бесконечного цикла. – pnezis
Как вы вообще обновляете текст? – Krenair