QML 中的 64 位整数 [英] 64 bit integers in QML
问题描述
如何在 QML 中处理 64 位整数?我知道无用的 Javascript 无法正常处理它们,因为它对所有内容都使用双精度,如果我尝试在信号中使用它们,所有内容都会设置为 undefined
.有没有解决的办法?也许我必须使用 QVariant
之类的?
How do I deal with 64 bit integers in QML? I know that useless Javascript can't handle them normally as it uses doubles for everything, and if I try to use them in a signal, everything gets set to undefined
. Is there a way around this? Perhaps I have to use a QVariant
or something?
推荐答案
创建你自己的 Integer64
类派生自 QObject
并给它你需要的函数,比如p>
Create your own Integer64
class derived from QObject
and give it the functions you need, like
class Integer64 : public QObject
{
Q_OBJECT
public:
// ...
Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged)
QString value() const;
void setValue(QString value);
Q_INVOKABLE void add(Integer64 * other);
Q_INVOKABLE void subtract(Integer64 * other);
Q_INVOKABLE void multiply(Integer64 * other);
Q_INVOKABLE void divide(Integer64 * other);
// ...
使用 value() 在 QML 中获取字符串表示形式,使用 setValue() 从字符串表示形式中设置值.
where you use value() to get a string representation in QML and setValue() to set a value from a string representation.
可以使用额外的构造函数从 C++ 高效地创建 Integer64
An additional constructor can be used to efficiently create Integer64
from C++
public:
explicit Integer64(QObject *parent = 0);
explicit Integer64(qint64 value, QObject *parent);
// ...
然后将类型注册到QML
Then register the type to QML
qmlRegisterType<Integer64>("MyModules", 1, 0, "Integer64");
这篇关于QML 中的 64 位整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!