gpt4 book ai didi

c++ - QSpinBox 输入 NaN 作为有效值

转载 作者:搜寻专家 更新时间:2023-10-31 00:01:26 25 4
gpt4 key购买 nike

我正在尝试扩展 QSpinBox 以能够输入“NaN”或“nan”作为有效值。根据文档,我应该使用 textFromValue、valueFromText 和验证函数来完成此操作,但我无法让它工作,因为它仍然不允许我输入数字以外的任何文本。这是我的 .h 和 .cpp 文件中的内容:

CPP 文件:

#include "CustomIntSpinBox.h"

CustomIntSpinBox::CustomIntSpinBox(QWidget *parent) : QSpinBox(parent)
{
this->setRange(-32767,32767);
}

QString CustomIntSpinBox::textFromValue(int value) const
{
if (value == NAN_VALUE)
{
return QString::fromStdString("nan");
}
else
{
return QString::number(value);
}
}

int CustomIntSpinBox::valueFromText(const QString &text) const
{
if (text.toLower() == QString::fromStdString("nan"))
{
return NAN_VALUE;
}
else
{
return text.toInt();
}
}

QValidator::State validate(QString &input, int pos)
{
return QValidator::Acceptable;
}

H文件:

#ifndef CUSTOMINTSPINBOX_H
#define CUSTOMINTSPINBOX_H

#include <QSpinBox>
#include <QWidget>
#include <QtGui>
#include <iostream>

using namespace std;

#define NAN_VALUE 32767

class CustomIntSpinBox : public QSpinBox
{
Q_OBJECT

public:
CustomIntSpinBox(QWidget *parent = 0);
virtual ~CustomIntSpinBox() throw() {}

int valueFromText(const QString &text) const;
QString textFromValue(int value) const;
QValidator::State validate(QString &input, int pos);
};

#endif // CUSTOMINTSPINBOX_H

我缺少什么吗?还是做错了?如果有更简单的方法来做到这一点,那也很高兴知道...

最佳答案

QAbstractSpinBox::validate() 的签名是:

QValidator::State QAbstractSpinBox::validate ( QString & input, int & pos ) const

因此您的 validate() 方法的签名在两个方面有所不同:它不是 const,并且您有 int pos 而不是 整数和位置。因此它不会覆盖 QAbstractSpinBox::validate 并且永远不会被 QAbstractSpinBox 调用。

关于c++ - QSpinBox 输入 NaN 作为有效值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com