QML 中的 64 位整数 [英] 64 bit integers in QML

查看:31
本文介绍了QML 中的 64 位整数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆