本文主要是介绍Qt之彻底解决QSpinBox限定范围无效的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
QSpinBox有个比较啃爹的问题,不管取值范围设置为多少,都能一直输入0,如下图所示:
当取值范围包含负数时,负号后也可以一直输入0,如下图所示:
还有就是当取值范围设置为10以上时,比如10~100,却可以输入1~9
虽然上述非法输入最终都未生效,当QSpinBox失去焦点时会显示为正常值,但是给人的体验很不好。下面将重写QSpinBox的数据校验方法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
这篇关于Qt之彻底解决QSpinBox限定范围无效的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!