Qt QSpinBox:如何显示大写十六进制数
Qt QSpinBox: How to display uppercase hexadecimal number
要使用 QSpinBox
输入和显示十六进制数,只需将 displayIntegerBase
设置为 16。但是,我找不到 属性 或方法来将显示设置为大写(例如 1A
而不是 1a
)。
我知道我可以重写 textFromValue()
方法来执行此操作,但感觉这是一个相当正常的用例。一定有更简单的方法吧?
我正在使用 Qt 5.12。
您可以通过 spinBox
字体的 setting the capitalization 强制大写为 QFont::AllUppercase
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();
}
这给出了以下结果:
要使用 QSpinBox
输入和显示十六进制数,只需将 displayIntegerBase
设置为 16。但是,我找不到 属性 或方法来将显示设置为大写(例如 1A
而不是 1a
)。
我知道我可以重写 textFromValue()
方法来执行此操作,但感觉这是一个相当正常的用例。一定有更简单的方法吧?
我正在使用 Qt 5.12。
您可以通过 spinBox
字体的 setting the capitalization 强制大写为 QFont::AllUppercase
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();
}
这给出了以下结果: