相关疑难解决方法(0)

带QValidator的QLineEdit:无论输入有效性如何,都对编辑完成了反应?

QLineEdit有一个信号QLineEdit::editingFinished在用户完成编辑时发出,例如按Enter键.但是,如果设置了验证器或输入掩码,则editingFinished仅在输入有效时才会发出.

但是,无论输入的有效性如何,我如何对完成编辑的用户做出反应?我是否必须手动检查输入,返回,小部件失去焦点等?

原因是:我想创建一个自定义小部件,用于使用a编辑数字QDoubleValidator.当用户完成编辑并且输入无效(范围错误,空文本......)时,我想将其重置为某个有效的默认值.像这样的东西:

class NumberEdit: public QLineEdit
{
public:
    NumberEdit(double min, double max)
    {
        setValidator(new QDoubleValidator(min, max, 10));
        setText(QString::number(min));

        connect(this, /* this is the problem */, [this, min]() {
            if(!hasAcceptableInput())
                setText(QString::number(min));    // Reset to valid number
        });
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ qt qlineedit qvalidator

7
推荐指数
1
解决办法
3708
查看次数

标签 统计

c++ ×1

qlineedit ×1

qt ×1

qvalidator ×1