我正在QT Creator上构建C++ GUI应用程序。
我将位置更改为葡萄牙语/巴西,现在只有逗号是小数点分隔符。
我需要QDoubleSpinBox作为小数点分隔符和逗号。
正式逗号是葡萄牙语的分隔符,但某些键盘的数字部分仅包含点。
请帮忙,
最佳答案
子类QDoubleSpinBox并重新实现虚拟方法validate
完整的解决方案在这里:
customSpinBox.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QRegExpValidator>
#include <QDoubleSpinBox>
class CustomSpinBox : public QDoubleSpinBox {
Q_OBJECT
public:
explicit CustomSpinBox(QWidget* parent =0);
virtual QValidator::State validate(QString & text, int & pos) const;
private:
QRegExpValidator* validator;
};
#endif // WIDGET_H
customSpinBox.cpp
CustomSpinBox::CustomSpinBox(QWidget *parent):QDoubleSpinBox(parent),
validator(new QRegExpValidator(this))
{
validator->setRegExp(QRegExp("\\d{1,}(?:[,.]{1})\\d*"));
}
QValidator::State CustomSpinBox::validate(QString &text, int &pos) const
{
return validator->validate(text,pos);
}
关于c++ - C++-Qt Creator-/如何将DOT和COMMA用作QDoubleSpinBox上的小数点分隔符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42534378/