aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/pyside6/PySide6/glue/qtcore.cpp6
-rw-r--r--sources/pyside6/libpyside/pyside.cpp6
-rw-r--r--sources/pyside6/libpyside/pysideutils.h8
3 files changed, 14 insertions, 6 deletions
diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp
index 8f1a6bb21..484b4d119 100644
--- a/sources/pyside6/PySide6/glue/qtcore.cpp
+++ b/sources/pyside6/PySide6/glue/qtcore.cpp
@@ -1416,13 +1416,11 @@ return PyLong_FromUnsignedLong(%in);
// @snippet return-pylong-quintptr
// @snippet return-pyunicode
-QByteArray ba = %in.toUtf8();
-return PyUnicode_FromStringAndSize(ba.constData(), ba.size());
+return PySide::qStringToPyUnicode(%in);
// @snippet return-pyunicode
// @snippet return-pyunicode-from-qanystringview
-QByteArray ba = %in.toString().toUtf8();
-return PyUnicode_FromStringAndSize(ba.constData(), ba.size());
+return PySide::qStringToPyUnicode(%in.toString());
// @snippet return-pyunicode-from-qanystringview
// @snippet return-pyunicode-qchar
diff --git a/sources/pyside6/libpyside/pyside.cpp b/sources/pyside6/libpyside/pyside.cpp
index 4abb2da98..16afb832e 100644
--- a/sources/pyside6/libpyside/pyside.cpp
+++ b/sources/pyside6/libpyside/pyside.cpp
@@ -722,6 +722,12 @@ QString pyUnicodeToQString(PyObject *str)
return QString::fromUcs4(reinterpret_cast<const char32_t *>(data), len);
}
+PyObject *qStringToPyUnicode(QStringView s)
+{
+ const QByteArray ba = s.toUtf8();
+ return PyUnicode_FromStringAndSize(ba.constData(), ba.size());
+}
+
// Inspired by Shiboken::String::toCString;
QString pyStringToQString(PyObject *str)
{
diff --git a/sources/pyside6/libpyside/pysideutils.h b/sources/pyside6/libpyside/pysideutils.h
index 9a2938906..e1c7397d6 100644
--- a/sources/pyside6/libpyside/pysideutils.h
+++ b/sources/pyside6/libpyside/pysideutils.h
@@ -47,6 +47,7 @@
#include <QtCore/QtGlobal>
QT_FORWARD_DECLARE_CLASS(QString)
+QT_FORWARD_DECLARE_CLASS(QStringView)
namespace PySide
{
@@ -57,10 +58,13 @@ namespace PySide
/// \return Returns true if self object inherits from class_name, otherwise returns false
PYSIDE_API bool inherits(PyTypeObject *self, const char *class_name);
-/// Given A PyObject repesenting Unicode data, returns an equivalent QString.
+/// Given A PyObject representing Unicode data, returns an equivalent QString.
PYSIDE_API QString pyUnicodeToQString(PyObject *str);
-/// Given A PyObject repesenting ASCII or Unicode data, returns an equivalent QString.
+/// Given a QString, return the PyObject repeesenting Unicode data.
+PYSIDE_API PyObject *qStringToPyUnicode(QStringView s);
+
+/// Given A PyObject representing ASCII or Unicode data, returns an equivalent QString.
PYSIDE_API QString pyStringToQString(PyObject *str);
/// Provide an efficient, correct PathLike interface.