问题标签 [qmodelindex]

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 回答
3807 浏览

c++ - 在 QTreeView 中找到 QModelIndex 的(视觉)位置的更简单方法

我对计算节点的物理位置很感兴趣,QTreeView但找不到这样做的方法(除了自己计算之外,考虑到 的鲁棒性,这很麻烦且容易出错QTreeView)。

是否有一种标准方法可以找到与 a 关联的数据的绘制位置QModelIndex(类似于将indexAt()位置映射到 a的方式QModelIndex)?

0 投票
1 回答
20231 浏览

qt - QTableView:如何正确创建 QModelIndex?

我正在尝试在特定单元格上进入编辑模式,如下所示:

我的模型创建了一个这样的索引:

调试输出如下所示:

我相当确定该索引在某种程度上是无效的,因为setCurrentIndex()它似乎不起作用。

0 投票
1 回答
299 浏览

qt - 阻止单个 QModelIndex 被更新

我有一个 QTreeView,其数据随时间变化,每秒在 QAbstractItemModel 中发出一个 dataChanged 信号。QTreeView 中的项目也可以编辑,但是当为某个项目打开编辑器时,编辑器字符串会在我编辑时更新,这很烦人。有什么方法可以防止编辑器使用新值更新?

0 投票
1 回答
970 浏览

c++ - 如何使用 QSqlTableModel 找到给定复合主键的 QModelIndex

我有这张桌子:

如何找到QModelIndex给定的复合主键,例如:

0 投票
1 回答
577 浏览

c++ - 如何从另一个用于搜索数据库的 QSqlQuery 中获取 QModelIndex(需要选择找到的项目)

处理我的 QSqlQueryModel 时遇到问题。我想在数据库中搜索一些项目并在我的 QTableView 中使用需要 QModelIndex 的 QItemSelectionModel 选择它们。

我不明白的是我应该如何搜索才能为我的模型/视图架构获取相应的 QModelIndex 。我不可能使用模型本身,因为它会弄乱视图中显示的项目。所以一个 QSqlQuery 或一个额外的 QSqlQueryModel 可能是一个选项,但是如何从他们的结果索引(.at()?)转换为适合我的模型/视图系统的 QModelIndex ......

提前致谢!

0 投票
1 回答
1411 浏览

qt - 如何在不修改原始 QSqlQueryModel 的情况下获取由 SELECT 查询(QSqlQuery)找到的行的 QModelIndex

我已经问过这个问题,但我被误解了,所以我试图准确地解决这个问题。

我正在使用 aQSqlQueryModel来显示来自 SQLite 数据库的数据,对于我使用QTableView.

现在我想实现一个“搜索/查找/替换”对话框,所以我用另外创建的数据库搜索数据库,QSqlQuery假设我找到了记录。

那么,我如何从QSqlQuery我的模型/视图架构的附加部分中找到这个记录呢?

问题是,我想突出显示找到的记录,因此我必须加载QItemSelectionModel一个特定的QModelIndex.

但我不知道如何做到这一点,也许我的计划是不可能的,还有其他可行的解决方案可以在数据库模型中查找文本并突出显示在QTableView.

我已经知道 , 和 的文档QSqlQueryQSqlQueryModel所以QModelIndex请不要只参考这些页面,这不会有太大帮助..

谢谢!

PS:还有一个相关的问题,尚未回答:“我如何使用 QSqlTableModel 找到给定复合主键的 QModelIndex”

0 投票
2 回答
13576 浏览

qt - 如何将 QModelIndex 与新行关联?

我已经制作了一个QAbstractListModel模型索引,其中包含一个我处理数据绝对需要的指针。我像这样添加数据:

直到后来我才意识到参数beginInsertRows是要求新行的模型索引,而不是新行的实际模型索引。

所以,在这个时间点,Qt 没有让我提供QModelIndex与这个特定行相关联的方法。如何为这个新行创建自己的模型索引?

0 投票
2 回答
1437 浏览

qt - 传递 QModelIndex 跨线程排队连接

这是函数签名。我打电话给它QtConcurrent::run

架构非常简单。查询将返回的预期行数是已知的。查询是并行运行的,并且在每条记录上提取一行添加到 table: WMI::WMITable* WMI::WMITable一个简单的 QObject 表数据结构。它在行添加时发出rowsAboutToBeInserted(QModelIndex, int, int)和。rowsInserted(QModelIndex, int, int)

另一方面ProgressIndicator,在主线程上实例化并table传递给它的ctor. WMI::WMIQuery::wmiquery()它从到获得预期的总行数ProgressIndicator::setRecordCount(quint64 count)。它有一个插槽rowAdded(),可以通过做一些简单的数学计算出 100 的进度。在它的ctor中它连接

我怎么想。当WMI::WMIQuery::wmiquery()我在不同的线程(on QThreadPool)上运行时,这个连接是一个跨线程排队连接。我对么 ?

我在运行时收到以下错误

QObject::connect: 无法对“QModelIndex”类型的参数进行排队
(确保使用 qRegisterMetaType() 注册了“QModelIndex”。)

我该怎么办 ?因为我SLOT(rowAdded())不需要 3 个参数,SIGNAL(rowsInserted(QModelIndex,int,int))我是否应该发出另一个信号rowInserted(),并在我发出时发出它,并将它rowsInserted(QModelIndex,int,int)用于SIGNAL这个连接

你可能会问为什么我rowsInserted(QModelIndex,int,int)在表数据结构中使用类似模型的信号。因为我也有一个连接到这个表的模型。这也将逐行更新。但是我认为这在这方面是不重要的。

0 投票
1 回答
1141 浏览

c++ - 在 QTreeView 中找到 QModelIndex 可见行的更简单方法

有没有办法获得给定的“视觉行” QModelIndex

假设我们有一棵树,其中一些节点展开,一些节点没有展开。例如,取一个部分展开的树并单击最后一项:

我想知道我点击的那个项目在第 5 行,以编程方式。QModelIndex的行和列没有帮助,因为这里有层次结构。

0 投票
2 回答
745 浏览

python - 从 QModelIndex 检索数据导致无限循环

我在实现__getitem____setitem__.

此类的实例是 a 的数据后端QAbstractListModeldata(index)我在执行模型时返回这些实例,role==Qt.UserRole以便能够从模型外部访问对象。

我想要执行此操作的一种情况是,当用户单击QListView使用我的模型显示数据的任何项目时。__getattr__现在的问题是,只要我尝试从用户单击的索引中检索数据,我的程序就会开始在无限循环中运行(在 内)。

下面是一个完整的、可复制/可粘贴的代码片段,它再现了所描述的行为。程序将index.data(Qt.UserRole)testfunc.

我是否在某处遗漏了一点,或者我在 PySide 中遇到了错误?