将自定义对象附加到 Qt 中的 QStandardItem

2024-02-04

我在用着QTreeView向用户显示一些数据。我想要的是将一个实际对象附加到使用表示的每个节点QStandardItem.

将对象引用保存到QStandardItem:

QStandardItem *child = new QStandardItem(s);
child->setFlags(child->flags() & ~Qt::ItemIsEditable);
child->setData(QVariant(QVariant::UserType, i), Qt::UserRole + 10);

要在 UI 中单击时访问实际对象:

void MyOtherClass::handleTreeViewSelectionChanged(const QModelIndex &i)
{
     MyClass* o = i.data(Qt::UserRole + 10).value<MyClass*>();
     // do other stuff with o
}

上面的调用只是返回NULL。 有人知道如何处理这样的要求吗?

我在网上找不到任何有用的东西。

任何帮助将不胜感激。


要将您的项目存储在 QStandardItem 中,您需要确保您已使用 QMetaType 注册了您的类型。例如,您可能有这样的定义:

class MyType
{
public:
    MyType() : m_data(0) {}
    int someMethod() const { return m_data; }

private:
    int m_data;
};

Q_DECLARE_METATYPE(MyType*);  // notice that I've declared this for a POINTER to your type

然后你可以将它存储到 QVariant 中,如下所示:

MyType *object = new MyType;
QVariant variant;
variant.setValue(object);

给定您的类型的正确注册元类型,您现在可以对 QStandardItems 执行类似的操作:

MyType *object = new MyType;
QStandardItemModel model;
QStandardItem *parentItem = model.invisibleRootItem();
QStandardItem *item = new QStandardItem;
item->setData(QVariant::fromValue(myType));  // this defaults to Qt::UserRole + 1
parentItem->appendRow(item);

然后提取它:

void MyOtherClass::handleTreeViewSelectionChanged(const QModelIndex &i)
{
     MyType* o = i.data(Qt::UserRole + 1).value<MyType*>();
     // do other stuff with o
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将自定义对象附加到 Qt 中的 QStandardItem 的相关文章

  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • Exit() 时是否调用基本对象析构函数?

    我意识到这个问题已经出现过几次 但我试图获得上述问题的明确答案 但我不断遇到相互矛盾的信息 我需要知道的是 当我使用 exit 时 基本类对象是否被破坏 我知道需要删除动态内存 但我的意思更像是 include
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点

随机推荐

  • 如何从 ASP.Net OpenID Connect OWIN 组件设置声明?

    我对使用新的 ASP Net OpenID Connect 框架同时在身份验证管道中添加新声明有疑问 如下面的代码所示 我不确定幕后到底发生了多少 魔法 我认为我的大部分问题都围绕着对 OWIN 身份验证中间件而不是 OpenID Conn
  • 运行 React 应用程序时找不到模块“@babel/plugin-transform-react-jsx-source”

    我刚刚创建了一个 React 应用程序create react app aquastars然后使用弹出依赖项yarn run eject当我运行该应用程序时 出现以下错误 找不到模块 babel plugin transform react
  • VS2010 LNK1181 重建带有依赖项的项目时

    我有一个包含两个 C CLR 项目的解决方案 一个项目引用另一个项目 因此项目依赖项和构建顺序正确反映了这一点 两个项目都针对相同的输出文件夹 依赖项目的依赖配置为Copy Local false 如果我自己 重建 依赖关系 它会构建得很好
  • servlet 引擎在调用 servlet 之前是否读取整个请求?

    Servlet 引擎 例如Tomcat or Jetty 接收 HTTP 请求并使用 servlet 调用HttpServletRequest对象 其中包含一个InputStream请求正文的 现在我想知道引擎是否已经读取整体来自网络的请求
  • (AWS) Athena:查询结果似乎太短

    我的 Athena 查询的结果似乎太短 试图找出为什么 Setup 胶水目录 尺寸为 118 6 G 数据 以 CSV 和 JSON 格式存储在 S3 中 Athena Query 当我查询整个表的数据时 每次查询只得到 40K 条结果 一
  • 在 Netbeans GUI Builder 中开发现有 GUI 代码

    我正在 Eclipse 中做项目 我做了 Swing 部分 但现在 我希望使用 Netbeans 来完成项目的 Swing 部分 因为它更容易完成 而且我能够更整洁地完成它 因为我对 swing 及其布局管理器没有太多经验 这是我在 sta
  • 如何强制刷新文件

    假设我有以下代码 include
  • Android上传大文件

    我对 Android 开发非常陌生 我正在尝试将大小为 25 到 50 MB 的文件上传到 Web 服务器 但出现内存不足错误 我在过去的两天里苦苦挣扎 不知道我哪里出了问题 对我哪里出错有什么建议吗 我正在处理的代码是 private F
  • Firebase 部署失败 - 找不到functions.yaml。必须使用http发现[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在尝试部署 firebase 云功能 但不断收到此错误 最奇怪的部分是 我让它工作正常 但从 firebase 与云视觉对话切
  • Angular 4 项目中功能性 e2e 量角器测试中的模拟休息调用

    我们有一个庞大的项目 我们编写了很多测试用例 在我们的 e2e 功能测试用例中涵盖了很多真实场景 的用户行为 随着测试的进行 它会进行大量的休息调用来完成测试用例 当我们在酱汁实验室中覆盖不同的浏览器时 它会增加 5 9 倍 我想要的是模拟
  • 如何在Dockerfile中访问云运行环境变量

    我已经构建了一个容器化的 python 应用程序 它使用本地运行没有问题 env文件和一个docker compose yml编译的文件撰写构建 然后我就可以像这样在 Dockerfile 中使用变量 ARG APP USR ENV APP
  • 如何使FactoryGirl.create影响另一条记录的属性?

    在网上商店应用程序中 通常在booking一个产品的预订控制器创建动作执行order save这反过来又激活必要的 before save 方法order sum of all bookings 当为查看订单列表的管理员构建 RSpec 测
  • 以字段名称作为参数的表达式谓词

    我使用这段代码 在 stackoverflow 上找到 来生成谓词 static class BuilderPredicate public static Expression
  • 错误 1 ​​libavcodec.so 文件格式无法识别 Android GL 动态壁纸

    我正在尝试为 android 制作一个动态壁纸 播放位于 android asset 设备上的 mp4 视频 以我正在使用的示例为例 它实际上在运行时将文件复制到 SD 卡 无关紧要 我找到了这个example https github c
  • Angular 5 按日期排序

    我有一张课程表 我想按日期排序 由于 Angular 5 没有 orderBy 管道 并且到目前为止我找到的所有解决方案都只能应用于数字和字符串 如果有人可以帮助我 我将不胜感激 这是我的桌子的主体 tbody tr th lesson d
  • 如何使用 sed (或类似的)删除两个 html 标签之间的所有行?

    我有一个如下所示的文件 lt stuff gt lt stuff gt 我试图删除 HEAD 标签之间 包括 HEAD 标签 之间的所有内容 但似乎无法使其工作 我想 sed i e s lt HEAD gt g file HTML 应该可
  • 将逻辑 and 应用于布尔值列表

    考虑以下 Scala 中的布尔值列表 List true false false true 您将如何使用foldRight 或foldLeft 模拟对列表中的所有值执行逻辑AND 的功能 而不是使用foldLeft Right 您还可以使用
  • 为什么切片[:-0]在Python中返回空列表

    今天在编写一些单元测试时偶然发现了一些有点令人困惑的事情 blah a b c blah 3 blah 2 a blah 1 a b blah 0 我一生都无法弄清楚为什么blah 0 应该是这样 该模式似乎绝对表明它应该是 a b c 任
  • Webclient 双向使用二进制文件

    网络客户端 http msdn microsoft com en us library system net webclient 28v vs 95 29 aspx用于将指令文件 最多 1 兆字节 上传到服务器 并以二进制数据形式接收该操作
  • 将自定义对象附加到 Qt 中的 QStandardItem

    我在用着QTreeView向用户显示一些数据 我想要的是将一个实际对象附加到使用表示的每个节点QStandardItem 将对象引用保存到QStandardItem QStandardItem child new QStandardItem