Как установить QDoubleSpinBox в научную нотацию?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как установить QDoubleSpinBox в научную нотацию?

Сообщение Anonymous »

Код: Выделить всё

QDoubleSpinBox
по умолчанию показывает число с десятичной точкой


[img]https://i.sstatic.net /vWY3k.png[/img]


и я пытаюсь отформатировать его в научной записи


Изображение


Моим решением было создание подкласса QDoubleSpinBox и переопределить методы validate, valueFromText и textFromValue.

Код: Выделить всё

class SciNotDoubleSpinbox : public QDoubleSpinBox
{
Q_OBJECT
public:
explicit SciNotDoubleSpinbox(QWidget *parent = 0) : QDoubleSpinBox(parent) {}

// Change the way we read the user input
double valueFromText(const QString & text) const
{
double numFromStr = text.toDouble();
return numFromStr;
}

// Change the way we show the internal number
QString textFromValue(double value) const
{
return QString::number(value, 'E', 6);
}

// Change the way we validate user input (if validate => valueFromText)
QValidator::State validate(QString &text, int&) const
{

// Try to convert the string to double
bool ok;
text.toDouble(&ok);
// See if it's a valid Double
QValidator::State validationState;
if(ok)
{
// If string conversion was valid, set as ascceptable
validationState = QValidator::Acceptable;

}
else
{
// If string conversion was invalid, set as invalid
validationState = QValidator::Invalid;
}
return validationState;
}
};
Это работает, но проверка кажется небрежной. Он пытается преобразовать число в двойное, используя toDouble Qt, и возвращает допустимое или недопустимое состояние в зависимости от того, было ли это преобразование успешным или нет. Он даже не использует позицию.

Есть ли способ проверить строку в экспоненциальной записи «более чистым» способом?

Подробнее здесь: https://stackoverflow.com/questions/542 ... c-notation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как контролировать научную нотацию в Matplotlib?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Удалить базовую границу QSpinBox и QDoubleSpinBox (Qt/PySide6)
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Qdialog предотвращает закрытие при нажатии return qdoublespinbox в фокусе
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Qdialog предотвращает закрытие при нажатии return qdoublespinbox в фокусе
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Установите класс Jackson ObjectMapper, чтобы не использовать научную запись для двойных значений.
    Anonymous » » в форуме JAVA
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»