问题标签 [qvariant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QVariant 如何在内部工作?
我想知道,QVariant 如何在内部存储,int,QMap,QList,...
我的意思是什么是内部数据结构/实现?在 QVariant 中存储和检索类型(int、float)的开销是多少?
c++ - 什么是 QVariant,什么时候应该使用它?
什么是 aQVariant
以及何时应该使用它?
qt - 如何调用“QListQVariant::toList () const"
这是一个非常简单且可能很愚蠢的问题,但我忘记了如何使用QList QVariant::toList () const
当然这是错误的,正确的出路是什么?:脸红:
qt - Qt枚举比较并输出到QDebug
我正在向 Qt 元对象系统注册枚举。我已经仔细检查了所有这些都具有元类型 ID,并且一切看起来都很完美。但是我对这些比较有一些未解决的问题。
让我们考虑这个用于填充组合框的代码:
效果很好,我的列表中填充了我的枚举的人类可读文本。
现在,我正在尝试使用包含枚举值的 QVariant 设置列表显示的初始值:
这段代码不起作用。我必须通过以下方式替换测试:
这样就可以了。
谁能解释我如何在 QVariants 中比较我的自定义枚举?还是在创建用作列表的用户数据的 QVariant 时我做错了什么?
此外,如果我尝试 qDebug() 在循环中创建的 QVariants 以填充列表,我会得到空值输出。例如,在第一段代码中生成的输出如下所示:
如您所见,该值未正确输出...您能帮我找出原因吗?
谢谢你,皮埃尔。
unit-testing - 使用 QVariant 进行单元测试
我想对返回 qvariant 的函数进行单元测试,以确保 qvariant 是否持有正确的值 请给我一些想法,我应该如何进行?
qt - QVariantMap 在析构函数中崩溃
我正在使用 Qt 构建一个 JSON 对象,并使用 QJson 将其转换为 QString。这(通常)可以正常工作,并且在这种情况下可以正常工作,但是在我的 Qt 数据结构的析构函数中,它会因访问冲突而崩溃。对象构建良好,它通过我的网络连接发送,函数结束后,我的应用程序崩溃。
我的代码如下所示:
如果我删除建立起来的内部循环,entryList
一切正常。似乎析构函数data
无法删除内容,但我不知道,为什么。整个数据结构在序列化时似乎很好(我希望 QJson 不会更改给定数据中的任何内容)但无法清理它。
最好的问候,托拜厄斯
c++ - Qt QMap.insert() 失败
我有一个 levelObjects 对象,它是 QMaps 的 QVariants 的 QList:
后来,当我尝试更改其中一个 QMap 中某些内容的值时,它似乎没有做任何事情:
产生:
遍历有问题的代码行(带有 .insert() 的代码行),我可以看到它经历了一堆与 QVariants 相关的汇编子例程,然后经历了 QMap::insert(),然后是更多的汇编。我最初的想法是,这可能触发了某种信号,导致其他地方的代码被执行,但事实并非如此。
有什么想法吗?
编辑:我通过一种解决方法解决了这个问题 - 摆脱了中间 QVariant 并使 levelObjects 成为 QMaps 的 QList。但是,我仍然很好奇是否有人对为什么会发生这种情况有任何见解。
qt - 将 QVariant 转换为 QStringList
我在调用函数时存储QStringList
在一个变量中。现在我想从变量中恢复这些数据。怎么做? QVariant
setData
QVariant
编辑:我试过转换,但我似乎不明白它是如何工作的。
qt - 将 QStandardItemModel 转换为 QVariant
我正在尝试将 QStandardItemModel 派生对象发送到 PythonQt,但我对如何发送它有点困惑。当我使用 boost::python 时,我有几个控件,比如 boost::noncopyable,以确保我没有重新创建这个对象,而是与 python 共享它。我还有一些构造可以从 python 内部提供一个指向 python 的 boost 共享指针。
class Scene : public boost::enable_shared_from_this<Scene>, public QStandardItemModel
但是,在 PythonQt 中,我不确定有什么可用的。该函数call
为所有函数参数采用 QVariantList。
QVariant PythonQt::call(PyObject* object, const QString &callable, const QVariantList &args = QVariantList))
我现在很困惑的是如何通过 QVariant 将我的对象传递给 python。由于它是从 QStandardItemModel 派生的,我认为它已经注册了
但这给了我以下错误:
'qt_metatype_id' : is not a member of 'QMetaTypeId<MyObject>'
我在声明我的班级后尝试注册它,但这会引发不同的错误。
我实际上得到了两次错误——一次是在我添加 Q_DECLARE_METATYPE 的标题中,另一个是另一个标题,它有一个始终派生自 QStandardItemModel 但在其他方面无关的类。
Q_DECLARE_METATYPE 甚至是将此对象转换为 QVariant 的正确方法吗?
BOOST_PYTHON_MODULE(场景) { class_("场景"); }