diff --git a/qmetaobject/src/qmetatype.rs b/qmetaobject/src/qmetatype.rs index 7ec5a75b..26965b49 100644 --- a/qmetaobject/src/qmetatype.rs +++ b/qmetaobject/src/qmetatype.rs @@ -494,6 +494,7 @@ qdeclare_builtin_metatype! {QJsonArray => 47} qdeclare_builtin_metatype! {QPixmap => if cfg!(qt_6_0) { 0x1001 } else { 65 }} qdeclare_builtin_metatype! {QColor => if cfg!(qt_6_0) { 0x1003 } else { 67 }} qdeclare_builtin_metatype! {QImage => if cfg!(qt_6_0) { 0x1006 } else { 70 }} +qdeclare_builtin_metatype! {QStringList => 11} #[cfg(target_pointer_width = "32")] qdeclare_builtin_metatype! {isize => 2} // That's QMetaType::Int @@ -664,4 +665,13 @@ mod tests { Some(QSize { width: 123, height: 254 }) ); } + + #[test] + fn test_qvariant_qstringlist() { + let list = QStringList::from(["abc", "def"]); + let t = QVariant::from(list.clone()); + + assert!(t == list.to_qvariant()); + assert!(QStringList::from_qvariant(t).unwrap() == list); + } } diff --git a/qttypes/src/lib.rs b/qttypes/src/lib.rs index 781f6ece..b1a62dfa 100644 --- a/qttypes/src/lib.rs +++ b/qttypes/src/lib.rs @@ -636,6 +636,18 @@ impl From for QVariant { }) } } + +impl From for QVariant { + /// Wrapper around [`QVariant(const QStringList &)`][ctor] constructor. + /// + /// [ctor]: https://doc.qt.io/qt-5/qvariant.html#QVariant-16 + fn from(a: QStringList) -> Self { + cpp!(unsafe [a as "QStringList"] -> QVariant as "QVariant" { + return QVariant(a); + }) + } +} + impl From for QVariant { /// Wrapper around [`QVariant(int)`][ctor] constructor. ///