QLineEdit
有一个信号QLineEdit::editingFinished
,当用户完成编辑(例如按下回车键)时会发出该信号。然而,如果设置了验证器或输入掩码,则只有在输入有效时才会发出editingFinished
信号。
但是,无论输入是否有效,我如何才能对用户完成编辑做出反应?我需要手动检查Enter、Return、小部件失去焦点等吗?
原因是:我想创建一个自定义的小部件来使用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
});
}
};