我正在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/

10-13 08:13