From e2e6bbaee1759896e316c49b138bd484582e5fe1 Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Tue, 23 Apr 2024 10:48:22 +0800 Subject: [PATCH] fix: the text input maybe can only input a number --- DSView/pv/dock/keywordlineedit.cpp | 30 +++++++++++++++++++----------- DSView/pv/dock/keywordlineedit.h | 5 +++-- DSView/pv/dock/triggerdock.cpp | 3 ++- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/DSView/pv/dock/keywordlineedit.cpp b/DSView/pv/dock/keywordlineedit.cpp index 40cd76f1..ef6562f9 100644 --- a/DSView/pv/dock/keywordlineedit.cpp +++ b/DSView/pv/dock/keywordlineedit.cpp @@ -168,12 +168,6 @@ PopupLineEdit::PopupLineEdit(const QString &text, QWidget *parent) _is_number_mode = false; } - PopupLineEdit::PopupLineEdit(bool isNumberMode, QWidget *parent) - :QLineEdit(parent) - { - _is_number_mode = isNumberMode; - } - void PopupLineEdit::mousePressEvent(QMouseEvent *event) { showPupopInput(); @@ -190,11 +184,6 @@ void PopupLineEdit::showPupopInput() input->GetInput()->setInputMask(mask); } - auto regular = this->validator(); - if (regular != NULL){ - input->GetInput()->setValidator(regular); - } - input->GetInput()->setMaxLength(this->maxLength()); input->GetInput()->setText(this->text()); input->setFont(this->font()); @@ -203,6 +192,12 @@ void PopupLineEdit::showPupopInput() QIntValidator *validator = new QIntValidator(); input->GetInput()->setValidator(validator); } + else{ + auto regular = this->validator(); + if (regular != NULL){ + input->GetInput()->setValidator(regular); + } + } _old_text = this->text(); @@ -222,6 +217,19 @@ void PopupLineEdit::onPopupInputEditEnd(QString text) } } +bool PopupLineEdit::set_number_mode(bool isNumberMode) +{ + _is_number_mode = isNumberMode; + + if (_is_number_mode){ + QIntValidator *validator = new QIntValidator(); + setValidator(validator); + } + else{ + setValidator(NULL); + } +} + int PopupLineEdit::value() { assert(_is_number_mode); diff --git a/DSView/pv/dock/keywordlineedit.h b/DSView/pv/dock/keywordlineedit.h index 61856b2f..6516d6bb 100644 --- a/DSView/pv/dock/keywordlineedit.h +++ b/DSView/pv/dock/keywordlineedit.h @@ -89,13 +89,14 @@ class PopupLineEdit : public QLineEdit public: explicit PopupLineEdit(QWidget *parent = nullptr); - explicit PopupLineEdit(const QString &, QWidget *parent = nullptr); - explicit PopupLineEdit(bool isNumberMode, QWidget *parent = nullptr); + explicit PopupLineEdit(const QString &text, QWidget *parent = nullptr); inline bool is_number_mode(){ return _is_number_mode; } + bool set_number_mode(bool isNumberMode); + int value(); void setValue(int value); diff --git a/DSView/pv/dock/triggerdock.cpp b/DSView/pv/dock/triggerdock.cpp index e05d9399..5902ce5d 100644 --- a/DSView/pv/dock/triggerdock.cpp +++ b/DSView/pv/dock/triggerdock.cpp @@ -588,7 +588,8 @@ void TriggerDock::setup_adv_tab() _value0_lineEdit->setInputMask(mask); _value0_lineEdit->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); _value0_lineEdit_list.push_back(_value0_lineEdit); - PopupLineEdit *_count_spinBox = new PopupLineEdit(true, _stage_tabWidget); + PopupLineEdit *_count_spinBox = new PopupLineEdit(_stage_tabWidget); + _count_spinBox->set_number_mode(true); // _count_spinBox->setRange(1, INT32_MAX); //_count_spinBox->setButtonSymbols(QAbstractSpinBox::NoButtons); _count_spinBox_list.push_back(_count_spinBox);