Qt QSpinBox: Как отобразить шестнадцатеричное число в верхнем регистре - PullRequest
2 голосов
/ 15 мая 2019

Чтобы использовать QSpinBox для ввода и отображения шестнадцатеричных чисел, просто установите для displayIntegerBase значение 16. Однако я не смог найти свойство или метод для установки отображения в верхнем регистре (например, 1A вместо 1a).

Я знаю, что могу переопределить метод textFromValue(), чтобы сделать это, но это похоже на вполне нормальный вариант использования. Должен быть более простой способ сделать это, верно?

Я использую Qt 5.12.

1 Ответ

3 голосов
/ 16 мая 2019

Вы можете принудительно ввести верхний регистр с помощью , установив заглавные буквы шрифта spinBox

    QFont font = ui->spinBox->font();
    font.setCapitalization(QFont::AllUppercase);
    ui->spinBox->setFont(font);

РЕДАКТИРОВАТЬ: Я подготовил небольшой пример дляпоказать поведение

#include <QWidget>
#include <QApplication>
#include <QHBoxLayout>
#include <QSpinBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget *w = new QWidget();
    QLayout* layout = new QHBoxLayout(w);

    QSpinBox* spinBox = new QSpinBox(w);
    spinBox->setRange(0, 0xFF);
    spinBox->setDisplayIntegerBase(16);
    QFont font = spinBox->font();
    font.setCapitalization(QFont::AllUppercase);
    spinBox->setFont(font);

    QSpinBox* spinBox2 = new QSpinBox(w);
    spinBox2->setRange(0, 0xFF);
    spinBox2->setDisplayIntegerBase(16);

    spinBox->setValue(0x1a);
    spinBox2->setValue(0x1a);

    layout->addWidget(spinBox);
    layout->addWidget(spinBox2);

    w->show();

    return a.exec();
}

Это дает следующий результат:

Uppercase and lowercase hexadecimal spinboxes

...