Qt QSpinBox:如何显示大写的十六进制数

chu*_*jiw 3 qt qspinbox qt5

要使用 aQSpinBox来输入和显示十六进制数字,只需将其设置displayIntegerBase为 16。但是,我找不到将显示设置为大写的属性或方法(例如,1A而不是1a)。

我知道我可以覆盖textFromValue()方法来做到这一点,但感觉就像一个相当正常的用例。一定有更简单的方法来做到这一点,对吧?

我正在使用 Qt 5.12。

Cen*_*olt 6

您可以通过强制大写设定资本的你spinBox的字体QFont::AllUppercase

    QFont font = ui->spinBox->font();
    font.setCapitalization(QFont::AllUppercase);
    ui->spinBox->setFont(font);
Run Code Online (Sandbox Code Playgroud)

编辑:我准备了一个小例子来展示行为

#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();
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果:

大写和小写十六进制旋转框