Если выполнить этот код в Python:PyQt QVariant со словарем
from PyQt4 import uic, QtCore, QtGui
qvdict = QtCore.QVariant(dict(name='a'))
print qvdict.toPyObject()
qvtuple = QtCore.QVariant(('name','a'))
print qvtuple.toPyObject())
Результат:
{PyQt4.QtCore.QString(u'name'): PyQt4.QtCore.QString(u'a')}
('name', 'a')
Как вы можете видеть ключи и значения строки в qvdict преобразуются в QString, но не для qvtuble.
Есть ли способ сохранить словарь именно так, как это было при инициализации объекта QVariant при использовании метода toPyObject?
Я знаю, что могу сделать преобразование my-self путем перестройки словаря и преобразования всех ключей и строковых значений, но не должен ли это быть таким образом, чтобы Qt вернул мне тот же самый объект?
Если кто-нибудь знает, почему Qt делает это преобразование, я бы хотел понять, почему это так.
Отличное объяснение. Благодаря! –