QAbstractItemModel: Fix Qt::TextAlignmentRole when metatype is uint
When combining text alignment flags, it no longer works since the metatype for example QVariant(Qt::AlignRight | Qt::AlignVCenter) is uint, not int. Fixes: QTBUG-103576 Pick-to: 6.2 6.3 Change-Id: If0291b99606787081c4bc26fd00431f8a17a61a2 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
c613dd4765
commit
54d81d1189
@ -145,10 +145,12 @@ template <typename T>
|
||||
T legacyEnumValueFromModelData(const QVariant &data)
|
||||
{
|
||||
static_assert(std::is_enum_v<T>);
|
||||
if (data.userType() == qMetaTypeId<T>())
|
||||
if (data.userType() == qMetaTypeId<T>()) {
|
||||
return data.value<T>();
|
||||
else if (data.userType() == qMetaTypeId<int>())
|
||||
} else if (std::is_same_v<std::underlying_type_t<T>, int> ||
|
||||
std::is_same_v<std::underlying_type_t<T>, uint>) {
|
||||
return T(data.toInt());
|
||||
}
|
||||
|
||||
return T();
|
||||
}
|
||||
@ -156,10 +158,12 @@ T legacyEnumValueFromModelData(const QVariant &data)
|
||||
template <typename T>
|
||||
T legacyFlagValueFromModelData(const QVariant &data)
|
||||
{
|
||||
if (data.userType() == qMetaTypeId<T>())
|
||||
if (data.userType() == qMetaTypeId<T>()) {
|
||||
return data.value<T>();
|
||||
else if (data.userType() == qMetaTypeId<int>())
|
||||
} else if (std::is_same_v<std::underlying_type_t<typename T::enum_type>, int> ||
|
||||
std::is_same_v<std::underlying_type_t<typename T::enum_type>, uint>) {
|
||||
return T::fromInt(data.toInt());
|
||||
}
|
||||
|
||||
return T();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user