昆明房產(chǎn)網(wǎng)站建設(shè)seo全網(wǎng)營(yíng)銷(xiāo)
QSpinBox有個(gè)比較啃爹的問(wèn)題,不管取值范圍設(shè)置為多少,都能一直輸入0,如下圖所示:
當(dāng)取值范圍包含負(fù)數(shù)時(shí),負(fù)號(hào)后也可以一直輸入0,如下圖所示:
還有就是當(dāng)取值范圍設(shè)置為10以上時(shí),比如10~100,卻可以輸入1~9
雖然上述非法輸入最終都未生效,當(dāng)QSpinBox失去焦點(diǎn)時(shí)會(huì)顯示為正常值,但是給人的體驗(yàn)很不好。下面將重寫(xiě)QSpinBox的數(shù)據(jù)校驗(yàn)方法validate來(lái)解決此問(wèn)題。
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