QLineEdit
有一個信號QLineEdit::editingFinished
,當用戶完成編輯時(例如按下回車鍵),該信號發出。但是,如果設置了驗證器或輸入掩碼,則只有在輸入有效時纔會發出editingFinished
。帶QValidator的QLineEdit:無論輸入有效性如何,完成編輯完成?
但是,無論輸入的有效性如何,我如何才能完成編輯?我是否必須手動檢查輸入,返回,小部件失去焦點等?
原因是:我想創建一個自定義小部件,用於使用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
});
}
};