QSpinBox 是面向从客户端输入获取数字的小部件,它具有 setDisplayIntegerBase() 方法,指示希望使用哪个数字基数,在这种情况下必须使用基数 16。
因此,如果您查看方法getInt() 有一个内部QSpinBox,那么只应启用该属性,没有直接方法可以获取QSpinBox,但我们可以使用findchild() 方法。
#include <QInputDialog>
#include <QSpinBox>
static QString getHex(QWidget *parent,
const QString &title,
const QString &label,
int value = 0,
int min = -2147483647,
int max = 2147483647,
int step = 1,
bool *ok = Q_NULLPTR,
Qt::WindowFlags flags = Qt::WindowFlags()){
QInputDialog dialog(parent, flags);
dialog.setWindowTitle(title);
dialog.setLabelText(label);
dialog.setIntRange(min, max);
dialog.setIntValue(value);
dialog.setIntStep(step);
QSpinBox *spinbox = dialog.findChild<QSpinBox*>();
spinbox->setDisplayIntegerBase(16);
bool ret = dialog.exec() == QDialog::Accepted;
if (ok)
*ok = ret;
return spinbox->text();
}
例子:
#include <QApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug()<<getHex(Q_NULLPTR, "title", "label", 0x1d, 0);
return 0;
}
截图: