问题标签 [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.

0 投票
1 回答
3611 浏览

c++ - 具有自定义类型的 qvariant_cast

我有这个类,将其注册为 QVariant

然后我在 QVariant 中转换它,当我想使用 qvariant_cast 并获取 MyTimeLine 对象时,我得到对象,由默认构造函数创建

0 投票
1 回答
1401 浏览

c++ - 如何在 Qt5 中声明 Qt::PenStyle?

我正在将一个项目从 Qt 4.x 迁移到 5,并且有一个包含以下属性的类:

及其各自的get函数:

我得到一个编译错误说

做了一些研究,我发现了这一点:

QVariant:
*Inconsistent 构造函数采用 Qt::GlobalColor 并产生 QVariant(QColor) 实例已被删除。可以通过显式调用 QColor 构造函数来迁移构建此类变体的代码。例如从“QVariant(Qt::red)”到“QVariant(QColor(Qt::red))

*类似地,从枚举值 Qt::BrushStyle、Qt::PenStyle 和 Qt::CursorShape 隐式创建 QVariants 已被删除。显式创建对象或使用 static_cast(Qt::SolidLine) 创建与枚举具有相同值的 int 类型的 QVariant。

问题是,如果我不能像那样做 Qt::PenStyle,我应该如何声明属性/函数?显式创建对象是什么意思?我已经尝试过像引用所说的那样做一些事情,但我没有设法解决它。我确实设法解决了其他类似的错误,但它们都不是属性或函数的声明。

完整错误:

0 投票
1 回答
436 浏览

qt5 - qvariant_cast 导致段错误

在 qt 的项目/视图框架中,我试图将 QColorDialog 保存为用户数据,然后将该对话框作为编辑器以及在绘制期间在 tableview 中检索。

在我的类构造函数中,我做

然后,在我的代表的绘画功能中,我有

在运行时,表格第一次显示(虽然颜色错误......我假设不同的问题)。我双击编辑单元格,它会按预期弹出对话框。但是,当我关闭时,它会在指示的行上出现段错误。我不明白为什么,因为我认为我正在做所有必要的检查。

0 投票
1 回答
529 浏览

qt - QVariant::QVariant(Qt::BrushStyle) 是私有的

以下代码在使用 Qt 5 编译时产生错误

错误信息如下:

那么我该如何克服呢?

0 投票
2 回答
2800 浏览

c++ - QVariant 中的自定义类型转换为空字符串

我正在编写一个词法扫描器,它从一些输入中生成一个令牌流。这些标记有一个type和一个value。由于我使用的是 Qt,因此我选择将令牌数据存储为QVariant. 这对于非自定义类型的令牌数据非常有效。

不幸的是,我有几个自定义类型也存储在令牌中。令牌具有toString()输出令牌描述(用于调试)的函数,但对于具有自定义类型数据的所有令牌,此函数会给出一个空字符串。代码如下:

测试.h:

令牌.h:

令牌.cpp:

扫描仪的示例输出:

令牌包含一个测试类,TT_TEST我希望变体打印它的值。不幸的是,这不起作用,我尝试了很多不起作用的解决方案。我当前的解决方法如下所示:

和修改后的toString()功能:

我必须为我所有感觉很笨拙和错误的自定义类型执行此操作。

我认为必须有更好的解决方案来解决这个问题。你们中的任何人都可以:

  • 告诉我如何以QVariant更好的方式解决问题,或者
  • 建议一个完全不同的解决方案,没有QVariant. (我之前有一个模板解决方案,但在那里遇到了不同的问题,所以如果有人建议我需要一个示例)。

?

0 投票
3 回答
11524 浏览

long-integer - 如何将 unsigned long int 转换为 QVariant

我意识到 QVariant 不提供long和的功能unsigned long。它提供到intunsigned intlong long的转换unsigned long long

我们可以在当前的桌面架构中找到longint是等价的,但它们不是从理论的角度来看的。

如果我想将 a 存储long在 aQVariant我有义务首先将值转换为long long. 我想知道是否有其他方法可以克服这个问题。

其次,我有兴趣知道更好/更简单的方法。即使用更简单的代码,并避免使用不必要的空间或指令。

0 投票
2 回答
28083 浏览

c++ - 如何将 QVariant 转换为自定义类?

我正在使用 Momentics IDE(本机 SDK)开发 BlackBerry 10 移动应用程序。

我有一个列表视图,我想用 C++ 处理它的项目(我需要使用 C++ 而不是 QML)。

我可以使用“connect”指令获取索引路径,但是在将 QVariant 解析为自定义类时遇到问题;

我尝试使用下面的静态演员表

但它返回:

谁可以帮我这个事 ?

0 投票
0 回答
767 浏览

c++ - 嵌套 QVariantMap

我正在使用嵌套的 QVariantMap 并且在定义一个采用路径(字符串列表)并将指针返回到低级 QVariantMaps 的方法时遇到问题:

...

...

我收到以下错误:

知道为什么。问题是我需要获取指向嵌套结构部分的指针,但我无法获得对 QVariant 内部的引用。我尝试使用 data_ptr,在分配给嵌套 QVariantMap的帖子中建议,但没有运气。出于显而易见的原因,我不想对插入/删除/值进行特殊包装(这就是为什么,据我所知,链接主题中接受的答案不是我的情况)。

我试过了:

  • 将 QPointer 存储在 QVariant 中——没有运气,因为 QVariant 不是 QObject;
  • 使用 QVariant::fromValue(QVariantMap *) 存储指针,但是当我调用 toMap() 时,它返回 QVariantMap,而不是指针,所以我再次得到临时地址错误。不管怎样,我认为这不是我想要的。

有人应该如何正确地做到这一点?

0 投票
1 回答
1562 浏览

c++ - 在 QT 中使用数组解析 JSON

我想在 QT 中解析 JSON。JSON 看起来像这样:

我使用以下代码:

所以我得到了“tuc”数组的变体列表。一般来说,我想获取所有带有键“短语”的对象,它们的值是这个数组的内容。有什么办法可以摆脱它吗?或者这不适用于 QVariantList 吗?

0 投票
2 回答
1495 浏览

c++ - 修改 QVariant 中保存的对象的成员变量

我有一个 QVariantList 包含不同类的对象。我需要修改列表中的一个对象的成员变量。我的代码运行,但对象没有改变(看起来对象的副本正在改变)。这是类似于我正在做的示例代码:

我也试过:

但没有区别。我想更改对象的 myfield,而不是对象的副本。如何修改 QVariant v 中保存的对象的“myfield”字段。