为 QStringListModel 项设置自定义数据

2024-01-02

我有 QStringListModel

QStringListModel* blocksModel = new QStringListModel();

以及一个继承自QObject的类

class Block : public QObject
{
    Q_OBJECT

public:

    Block();
    Block(const Block& other);
    ~Block;

//and other stuff here    

};
Q_DECLARE_METATYPE(Block*)

当我为 Qt::EditRole 设置数据时,一切正常,但是当我尝试为 Qt::UserRole 设置数据时,它永远不会返回 true,并且当我获取数据时,我看到无效的 QVariant

int count = blocksModel->rowCount();
blocksModel->insertRows(count, 1);
QModelIndex index = blocksModel->index(count, 0);

// it works
QString name = QString("Block %1").arg(count + 1);
blocksModel->setData(index, name);

QVariant var = QVariant::fromValue(block);
// it doesn`t work
bool setSuccessful = blocksModel->setData(index, var, Qt::UserRole);

//invalid QVariant
QVariant var2 = index.data(Qt::UserRole);
Block* oneMoreBlock = var2.value<Block*>();

事实上,无论我尝试为该项目设置哪种类型的数据,这也不起作用:

blocksModel->setData(index, QVariant(1), Qt::UserRole);

我尝试过 Qt::UserRole + 1,并得到了相同的结果。也许我应该以某种方式定义模型使用的 ItemDataRoles ?

有任何想法吗?谢谢。


尝试使用 QStandardItemModel 而不是 QStringListModel。

QStringListModel 似乎不支持 Qt::UserRole。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 QStringListModel 项设置自定义数据 的相关文章

随机推荐

  • AJAX 请求时清空 $_SESSION 超全局变量,但保留会话 ID

    我遇到问题 SESSIONAJAX 请求上的超级全局 session start 函数在任何会话编码之前调用 调用代码和AJAX响应代码中的Session ID也是相同的 通过echoing测试session id 在两个脚本中 AJAX
  • 如何使用有效的 AWS 配置文件配置 Alexa Ask-cli?

    在使用了developer amazon com和aws amazon com的漂亮浏览器GUI之后 事情变得越来越严重 现在我想使用ask cli来初始化Alexa技能及其lambda函数 当我想要的时候ask init 它告诉我 我应该
  • Unity 3D:资源包与资源文件夹与 www.Texture

    因此 我在论坛上阅读了一些有关 Unity 3D 中的 AssetBundles 和 Resources 文件夹的内容 但我无法找出我所面临问题的最佳解决方案 问题是这样的 我有一个专为独立设计的程序 可以加载充满 png 和 jpg 图像
  • 具有手动内存管理的解释语言?

    哪些解释型语言无指针语言 IE Python Java Perl PHP Ruby Javascript 等 具有手动内存管理功能 我不记得曾经听说过 解释型语言主要担心的不是垃圾收集的非确定性延迟 或没有足够延迟时的空间复杂性 吗 那么为
  • MPAndroidChart - 自 v2 以来删除顶部边框/轴

    我将 MPAndroidChart 从 v1 7 升级到 v2 并且必须更改一些内容 新的事情之一是我现在似乎有一个最大值的顶部边框 我试图隐藏所有边框的代码是这样的 LineChart graph LineChart connection
  • 如何使用 Delphi 获取与文件扩展名关联的程序名称?

    我需要获取当前与当前用户的文件扩展名关联的程序的名称 如果右键单击文件并选择属性 那么我需要的是 打开方式 行右侧的程序名称 例如对于 xls 我希望能够获得答案 Microsoft Office Excel 或者用户作为默认程序打开 xl
  • 从 Java 应用程序在 Chrome 控制台中执行 JavaScript 命令

    我想创建一个简单的应用程序 它将在特定页面上的 Chrome 控制台中执行 JavaScript 命令并返回输出 也就是说 我想从当前页面获取所有可访问的链接 我可以通过在 Chrome 控制台中运行以下命令来完成此操作 urls a fo
  • WordPress 中哪些列存储 slug

    在 WordPress 中 哪一列存储 slug 自动生成的或用户输入的 我在其中都找不到这个wp posts or wp postmeta The wp posts GUID存储直接链接 但不存储 slug 帖子和页面的 slug 存储在
  • 核心图像:使用 CICrop 后,应用合成滤镜无法对齐

    我正在使用 CICrop 通过剪切图像的顶部和底部来将图像裁剪为特定尺寸 之后 我应用 CIMultiplyCompositing 过滤器之类的东西 将裁剪后的图像与另一个图像组合起来 两张图片大小相同 但结果显示两张图片没有对齐 其中一张
  • VBA - 在“IF 语句”内嵌套“With 语句”

    语言 VBA MS Access 我在代码中使用用户定义类型 UDT 我希望能够根据状态变量确定我正在将数据加载到 UDT 的哪个部分 我的第一次尝试是使用嵌套在 IF 语句中的 With 语句 这不起作用 我收到一个编译器错误 显示 El
  • 不明白二叉树最大路径和问题的解法

    GeeksforGeeks 网站已推出一个办法 https www geeksforgeeks org find maximum path sum in a binary tree 对于二叉树的最大路径和问题 问题如下 给定一棵二叉树 找到
  • 有条件的 Django 中间件(或如何排除管理系统)

    我想使用我在整个网站上编写的一些中间件 大量页面 因此我选择不使用装饰器 因为我想对所有页面使用代码 唯一的问题是我不想将中间件用于管理代码 并且它似乎对它们很活跃 有什么方法可以配置 settings py 或 urls py 或者代码中
  • 为什么 FormControl#valueChanges 的订阅没有被垃圾收集?

    我浏览过很多帖子说需要取消订阅FormControl valueChanges以防止内存泄漏 我了解取消订阅的 何时 和 如何 Observables 据我了解 产生的 Observablesinfinite需要取消订阅的值的数量以及For
  • 检查 SQL Server 服务器可用性的最快方法是什么?

    我有一个在多个位置使用的 MS Access 程序 它连接到 MS SQL Server 表 但每个位置的服务器名称都不同 我正在寻找最快的方法来测试服务器是否存在 我当前使用的代码如下所示 ShellWait sc ServerName
  • 将 PivotItemHeader 样式应用于 UWP 中的 PivotItem

    我已经创建了一个 PivotItemHeader 样式 其中包含资源中的键 但不知道在哪里应用它 尽管如果我删除 Key 它将应用于所有 PivotItemHeader 但我不想这样做 我只想将此应用到选择枢轴
  • 如何从代码中更改宽高比约束值?

    我在 xib 中为 imageView 指定了 1 2 的长宽比约束 我已经为约束创建了一个 IBOutlet 现在我需要根据某些条件将纵横比更改为 1 1 我想知道除了删除旧约束并放入新约束之外 是否有任何方法可以更改约束的乘数值 我认为
  • iOS 9.x 中嵌入式 Facebook 浏览器的视口/页面高度错误

    当打开demo https mtr github io core layout examples 申请来自核心布局 https www npmjs com package core layout使用 iOS 9 x 至少 上 Faceboo
  • 在 Google 表格的 Google 脚本中的特定表格上使用 onedit() 触发器

    我需要运行由 onedit 触发的脚本 仅对其中的一张进行处理 我已经尝试过以下操作 但目前我无法让脚本仅在所需的工作表 库存 上工作我确信这对于知道的人来说会非常简单 function onEdit e var range e range
  • jQuery 日期选择器,其中文本输入是只读的

    我想使用 Jquery 日期选择器 我已经使用 alt 字段选项进行了设置 我在文本字段中显示 D M Y 但提交 Y M D 到目前为止一切正常 发送正确的数据等 但是我想阻止用户手动输入日期 我最初将 INPUT 字段设置为禁用 该字段
  • 为 QStringListModel 项设置自定义数据

    我有 QStringListModel QStringListModel blocksModel new QStringListModel 以及一个继承自QObject的类 class Block public QObject Q OBJE