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?
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);
// ...
where you use value() to get a string representation in QML and setValue() to set a value from a string representation.
An additional constructor can be used to efficiently create Integer64
from C++
public:
explicit Integer64(QObject *parent = 0);
explicit Integer64(qint64 value, QObject *parent);
// ...
Then register the type to QML
qmlRegisterType<Integer64>("MyModules", 1, 0, "Integer64");