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

时间:2019-05-15 19:56:54

标签: qt qt5 qspinbox

要使用@media only screen and (max-width : 1280px) { } 输入和显示十六进制数字,只需将QSpinBox设置为16。但是,我找不到将显示设置为大写的属性或方法(例如{{1 }},而不是displayIntegerBase)。

我知道我可以重写1A方法来做到这一点,但是感觉就像是一个很正常的用例。必须有一种更简单的方法,对吧?

我正在使用Qt 5.12。

1 个答案:

答案 0 :(得分:2)

您可以通过spinBox的字体的setting the capitalization强制使用大写字母

    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