Details
-
Bug
-
Resolution: Invalid
-
Not Evaluated
-
None
-
5.12.3
-
None
Description
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