QLineEdit
ユーザーが編集を終了したときに発行される信号QLineEdit::editingFinished
があります。たとえば、Enter キーを押すことによってです。ただし、バリデーターまたは入力マスクが設定されeditingFinished
ている場合は、入力が有効な場合にのみ発行されます。
しかし、入力の有効性に関係なく、編集を終了したユーザーにどのように反応できますか? 入る、戻る、ウィジェットがフォーカスを失っているなどを手動で確認する必要がありますか?
この理由: を使用して数値を編集するためのカスタム ウィジェットを作成したかったの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
});
}
};