昆明房產(chǎn)網(wǎng)站建設seo全網(wǎng)營銷
QSpinBox有個比較啃爹的問題,不管取值范圍設置為多少,都能一直輸入0,如下圖所示:
當取值范圍包含負數(shù)時,負號后也可以一直輸入0,如下圖所示:
還有就是當取值范圍設置為10以上時,比如10~100,卻可以輸入1~9
雖然上述非法輸入最終都未生效,當QSpinBox失去焦點時會顯示為正常值,但是給人的體驗很不好。下面將重寫QSpinBox的數(shù)據(jù)校驗方法validate來解決此問題。
QHSpinBox.h
#ifndef QHSPINBOX_H
#define QHSPINBOX_H#include <QSpinBox>class QHSpinBox : public QSpinBox
{
public:explicit QHSpinBox(QWidget *parent = nullptr);QValidator::State validate(QString &input, int &pos) const override;
};#endif // QHSPINBOX_H
QHSpinBox.cpp
#include "QHSpinBox.h"QH