Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-75776

QVariant canConvert: true / convert: false

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Invalid
    • Icon: Not Evaluated Not Evaluated
    • None
    • 5.12.3
    • Core: Other
    • None
    • Windows

      When I convert a string to a user defined enum, I found out that canConvert returns true for invalid strings, but convert returns false.

      I expect that canConvert should return false aswell.

      Here is my example: 

      // testenum.h
      
      #ifndef TESTENUM_H
      #define TESTENUM_H
      
      #include <QObject>
      
      namespace test {
          Q_NAMESPACE
      
          enum class TestEnum
          {
              ENUM_VALUE_1 = 10,
              ENUM_VALUE_2 = 20,
              ENUM_VALUE_3 = 30
          };
          Q_ENUM_NS(TestEnum)
      }
      
      #endif // TESTENUM_H
      
      // main.cpp
      
      #include <QDebug>
      #include <QVariant>
      
      #include "testenum.h"
      
      int main()
      {
          bool convert = QVariant("ABC").convert(qMetaTypeId<test::TestEnum>());
          bool canConvert1 = QVariant("ABC").canConvert<test::TestEnum>();
          bool canConvert2 = QVariant("ABC").canConvert(qMetaTypeId<test::TestEnum>());
      
          qInfo() << "convert:"
                  << convert
                  << "canConvert1:"
                  << canConvert1
                  << "canConvert2:"
                  << canConvert2;
      }
      

      The output is:

      convert: false canConvert1: true canConvert2: true
      

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            thiago Thiago Macieira
            toms toms
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes