- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个小问题想弄清楚,我正在开发一个使用 QTreeView 的 QT 应用程序,我有一堆有子项的类别,所以它们看起来像
Parent 1
Parent 2
- Child 1
- Child 2
Parent 3
等等等等,所以在我的数据库中,我有包含所有常规详细信息(名称、ID、创建日期等)的行,而那些是子项的行则指定了它们的父项(所以 pid=parent row id ).然后我循环然后使用标准的 QSqlQuery 东西。但是我遇到的问题是……
项目通过 QStandardItem* item = new QStandardItem(icon, name);
添加到 TreeView ,然后附加行 model->appendRow(item);
但我的 child 需要调用 parentitem->appendRow(item);
所以父级的 QStandardItem* item
。但是,如果不存储每个 item
,我如何才能找出它是什么?
故事的寓意是,是否有一种方法可以执行以下操作之一而不会破坏性能。
QStandardItem* 项
存储在一个数组中,以便我可以在子循环中引用父项?QStandardItem* item
分配一个 ID 或其他东西,然后我可以在添加 child 时引用它。我似乎无法从数据库中找到任何带有 child 的 QTreeView 的好例子。
最佳答案
您只需要一个 QMap<int, QStandardItem*> rowItemMap
.当您从数据库中检索具有给定行 ID 的行时,您会立即创建一个项目并将其添加到 map 中。然后将其添加到您在 map 中查找的父级。您需要创建一个虚拟父项作为根项。存储指向项目的指针没有错。对于合理数量的元素,这无关紧要。如果您考虑存储超过 10k 的项目,您可能需要考虑使用一个 View ,该 View 提供直到树的特定深度的传递闭包。通过 QSqlTableModel
映射这样的 View 会容易得多。 , 直接到树上,而不必将整个树从数据库复制到临时模型中。
关于c++ - 如何维护树模型中父 QStandardItems 和数据库行 ID 之间的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777395/
我想把 QComboBox变成 QStandardItem用于 QStandardItemModel .我一直在环顾四周,我找不到答案,有什么想法吗? 最佳答案 您不存储 QComboBox在 QSt
我正在尝试创建一个支持项目内部移动的 QTreeView 以及一种检测移动源和目标的方法。使用 QTreeWidget 时,我可以覆盖 dropEvent 并执行如下操作: void MyTreeWi
我的 Qt 版本是 5.5.1 (Linux),由于某些原因我无法升级它。 我有 QTableView(继承自 QWidget),这个 QTableView 有模型 QStandardItemMode
我目前在 QStandardItem 中有文本,它是 "mm3",现在这应该是毫米立方体。有什么方法可以使它在 View 中变为 mm^3(即上标 3)? 最佳答案 你应该使用 sup具有 super
使用 Qt4 的模型/ View 框架,我有一个显示为“Foo (38 bars)”的项目列表。我想让文本可编辑,但是当用户开始编辑时,我希望控件只显示“Foo”(名称),然后在编辑完成时恢复额外信息
如以下代码所示,当您拖放一个项目(使用 clone() 方法从 QStandardItem 子类化)时,您将获得一个 QStandardItem 而不是子类。此外,存储在类中或作为 setData 一
我有一个自定义类 ConnectionStandardItem,它是 QStandardItem 的子类。此项应包含稍后在 QSqlDatabase 中使用的服务器、用户名、密码等信息。 Connec
我在 Qt 中使用 C++ 进行编程。当我构造 QStandardItem 时,它不接受之前声明的 QString: file_content = new QString(textstream
我想要的是: Root ------ item1 | --- newItem |_____ item 2 | --- newItem
从 QStandardItem 派生时出现意外错误。我如何添加我的派生类是添加新>> C++ 类。选择基类作为 QObject,创建类后,我将 QObject 重命名为 QStandardItem。
我想知道是否可以向 QStandardItem 添加自定义类。我目前正在做这样的事情 QStandardItem* item_text= new QStandardItem(); item_text
我有一个 QTreeView(100 行)和 QStandardItemModel(10 列) 每个表格单元格都有作为 QStandardItem 插入的数据在第二列中,我需要以下掩码“0-00-00
我正在尝试显示一个图标和文本表格,以便每个项目在图标上方都有文本。 我目前正在使用 QStandardItems 与 QStandardItemModel 和 QTableView 来显示信息,但是文
我有: self.treeView = QTreeView() self.treeView.setObjectName("testView") self.treeView.setDragDropMod
使用 PyQt 5,我一直在尝试找到一种方法,使用 QStandardItemModel 和 QStandarItems 从 QTreeView 情况下的项目上的拖放操作中获取旧父级。 如果可能的话,
我想从项目中删除特定的 child ,我的父项目是常量,即。我不能用不同的父项目替换它,我必须处理我拥有的那个。子项本身有多个级别的子项。我试过了,但没用。 QStringList list; //
如果我像这样构造一个QStandardItem: item = QtGui.QStandardItem('Item Name') 当此项目添加到 QStandardItemModel 模型并在 QTr
我正在尝试使用自定义 QStandardItem 在两个 QListViews 之间进行拖放。 除了this document,我在网上找不到我需要的信息这有点帮助,但现在我被困住了。 从一个 QLi
我需要从 csv 文件中绘制图表。我为此使用了 QList。我需要获取特定列中的所有项目,例如第 4 列中的项目。这是我解析 csv 文件并写入表的方法。我需要一种方法来获取一行中的每 4 个元素。
有什么方法可以为 QStandardItemModel 中的条目分配一个唯一的键,以便我们可以检查该键的存在。如果它存在,我们得到相关的 QstandardItem ? 更新: 这是我正在尝试做的事情
我是一名优秀的程序员,十分优秀!