Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Does anyone know why big int values on QVariant store as double ?
QtWS25 Last Chance

Does anyone know why big int values on QVariant store as double ?

Scheduled Pinned Locked Moved General and Desktop
12 Posts 4 Posters 3.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    aabc
    wrote on last edited by
    #1

    Does anyone know why big int values on QVariant store as double ?

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mbnoimi
      wrote on last edited by
      #2

      I'm not sure what do you mean but QVariant works fine with maximum value of int

      @#include <QCoreApplication>
      #include <QDebug>
      #include <limits>

      int main(int argc, char *argv[])
      {
      QCoreApplication a(argc, argv);

      int x = INT_MAX;
      qDebug() << QVariant(x).toInt();
      
      return a.exec&#40;&#41;;
      

      }
      @

      You can past a snippet in case that's not what you mean.

      1 Reply Last reply
      0
      • A Offline
        A Offline
        aabc
        wrote on last edited by
        #3

        Try to use it this way:

        @
        int main(int argc, char *argv[])
        {
        QCoreApplication a(argc, argv);

        int x = INT_MAX;
        QVariant v1 = x;
        qDebug() << v1;
        
        return a.exec&#40;&#41;;
        

        }

        @

        1 Reply Last reply
        0
        • raven-worxR Offline
          raven-worxR Offline
          raven-worx
          Moderators
          wrote on last edited by
          #4

          this outputs the following in the console for me:
          [quote]QVariant(int, 2147483647)[/quote]

          Which compiler are you using?

          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
          If you have a question please use the forum so others can benefit from the solution in the future

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mbnoimi
            wrote on last edited by
            #5

            [quote author="aabc" date="1367143234"]Try to use it this way:[/quote]

            It works fine to me!!! I got this:

            bq. QVariant(int, 2147483647)

            1 Reply Last reply
            0
            • A Offline
              A Offline
              aabc
              wrote on last edited by
              #6

              It happens when I use it with QML (Created C++ QML object)

              1 Reply Last reply
              0
              • raven-worxR Offline
                raven-worxR Offline
                raven-worx
                Moderators
                wrote on last edited by
                #7

                [quote author="aabc" date="1367143234"]Try to use it this way:

                @
                int main(int argc, char *argv[])
                {
                QCoreApplication a(argc, argv);

                int x = INT_MAX;
                QVariant v1 = x;
                qDebug() << v1;
                
                return a.exec&#40;&#41;;
                

                }
                @
                [/quote]

                well..whats your output of these lines?!

                --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                If you have a question please use the forum so others can benefit from the solution in the future

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  aabc
                  wrote on last edited by
                  #8

                  The same as yours.
                  This problem happens when I use it with QML.
                  For some reason if I pass large int to variant property (C++ QVariant) it stores it as double

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    amccarthy
                    wrote on last edited by
                    #9

                    QML/JavaScript only has a single number type, implemented as a double. Assigning directly to a QVariant property will keep this type information. Is this what you are seeing?

                    1 Reply Last reply
                    0
                    • raven-worxR Offline
                      raven-worxR Offline
                      raven-worx
                      Moderators
                      wrote on last edited by
                      #10

                      show the code please.

                      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                      If you have a question please use the forum so others can benefit from the solution in the future

                      1 Reply Last reply
                      0
                      • A Offline
                        A Offline
                        aabc
                        wrote on last edited by
                        #11

                        Not exactly.
                        Whan I assign to QML int property small value (such as 500) the C++ QVariant stores it as int.
                        But when I assign to this QML int property large value (such as 1111111111) the C++ QVariant stores it as double.

                        1 Reply Last reply
                        0
                        • A Offline
                          A Offline
                          aabc
                          wrote on last edited by
                          #12

                          C++:

                          @
                          class MyItem: public QObject
                          {
                          Q_OBJECT

                          Q_PROPERTY(QVariant value       READ value          WRITE setValue  NOTIFY valueChanged)
                          

                          public:
                          inline const QVariant& value() const
                          {
                          return m_value;
                          }

                          inline void setValue(const QVariant& _value)
                          {
                              qDebug() << "_value = " << _value;
                              qDebug() << "m_value = " << m_value;
                          
                              if(_value != m_value)
                              {
                                  m_value = _value;
                                  emit valueChanged();
                              }
                          }
                          

                          private:
                          QVariant m_value;
                          }
                          @

                          QML:

                          @
                          property int myQmlInt: 111111111

                          MyItem
                          {
                          id: myItem1
                          value: myQmlInt
                          }
                          @

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved