问题标签 [qabstractitemview]

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 投票
2 回答
592 浏览

c++ - 项目已选中但未突出显示

我使用 Qt/C++,我有一个 QListView 在屏幕上显示图标。我将 QListView::iconMode 设置为将其显示为图标视图。但我看不到它被选中(但它被选中)它没有突出显示。但是它适用于列表模式。我有这个。

你能帮助我吗?

0 投票
0 回答
770 浏览

c++ - 如何根据启用/禁用的小部件从 QAbstractItemModel 返回特殊的文本颜色

对于 myQAbstractItemModel中的某些列,我需要文本以特殊颜色显示。我通过在data()where 中返回该颜色来做到这一点role == Qt::TextColorRole。这很好,直到显示此模型的视图被禁用,然后那些特殊颜色仍然“明亮”,而所有其他文本都是灰色/静音。

是否有一种简单的方法可以在禁用小部件时返回​​特殊颜色?

失败(或过于复杂)的想法:

  1. 返回具有正确颜色的 QPalette 表单data()以启用/禁用 - 不起作用(也没有记录到)
  2. 检查QAbstractItemModel::flags()- 基类也不知道小部件(也不应该)
  3. 将信号从我的小部件连接到我的模型,以便在小部件的启用/禁用状态发生变化时发出。

数字 3 似乎最有可能,但它有点复杂。对于它的价值,我一次只会有一个使用这个模型的项目视图。

所需代码:

我可能要做的(希望有更好的解决方案):

自然,这不适用于单个模型上的多个视图。

0 投票
2 回答
2498 浏览

c++ - 如何关闭由自定义 QItemDelegate::createEditor() 创建的编辑器

我创建了一个自定义项目委托,它允许用户编辑文件路径列表:

截屏

我通过自定义类 DirEdit 实现了这一点。现在提交了选定的路径,并且当用户按下回车键时编辑器关闭,但我想添加两种情况,即无需用户按下回车键即可关闭编辑器:

  1. 当用户通过激活组合框条目(通过单击或按回车键)选择文件时
  2. 当用户通过单击“省略号”工具按钮选择文件时。

我一直在尝试 clearFocus() 和其他方法,但似乎没有任何效果。下面是一个完整的例子:

0 投票
1 回答
819 浏览

qt - 选定的项目在 QTableView 中丢失突出显示

我的 QTableView 的扩展选择有问题。问题是我的列和行周围有一些空格,当我点击这个空格时,我选择的字段的突出显示丢失了。当我单击应用程序中的其他位置时,它不会发生,仅在空白处。此外,当我将选择模式设置为 SingleSelection 时,它工作得很好。

这是一个简短的 gif 来说明问题 https://gyazo.com/8e4ae161aaff25a4afa1b588579ddd01

谢谢所有能真诚帮助我的人

0 投票
2 回答
2537 浏览

qt - 如何从 QHeaderView 中删除水平边框

我有带有水平 headerView 的 QTableView 对象,(我隐藏了垂直)。我将 setShowGrid(false) 设置为从 qtableView 中删除网格,但是如何删除 QTableView 与其水平标题之间的分隔符边框。我试过了:

但没有成功。谢谢你

0 投票
1 回答
1505 浏览

c++ - Qt,QListView 模型

我想从我的列表视图模型中为选定的行设置背景颜色。选择另一行后,前一行的颜色变为透明。谢谢!

0 投票
1 回答
3221 浏览

c++ - QTreeView - 如何判断拖放事件是重新排序还是父母之间的移动?

我有子类,QTreeView目前QAbstractItemModel我正在使用拖放将项目从一个父索引移动到另一个。我还想添加重新排列同一父索引中项目顺序的功能。当用户将一个项目放置在其他两个项目之间时,我需要确定应该放置在其中还是在它们之间。我还想在鼠标移动时在两个项目之间画一条黑线,以提示会发生什么,类似于附图中的许多其他树型视图(例如大多数操作系统上的文件浏览器):

拖入现有项目:

拖入

在两个现有项目之间插入:

夹在中间

Qt 是否自动执行这部分拖放行为,还是我必须手动计算鼠标相对于树项边缘的位置?另外,我怎样才能在两个项目之间画一条临时线QTreeView

0 投票
1 回答
849 浏览

qt - 添加项目时如何保持项目视图滚动到底部?

在 a 显示的模型末尾附加项目时QAbstractItemView,我希望将视图保留在数据的底部,显示最近添加的项目。默认行为是保留最近显示的项目的位置,但如果我们在底部,则不滚动。

如果用户之前一直滚动到底部,将视图保持在底部需要什么魔法?

0 投票
0 回答
95 浏览

c++ - QAbstractItemView selectAll 慢

我有QTableView大约 10k 个条目。当我打电话QAbstractItemView::selectAll时,大约需要 5 秒才能完成。其他方面的表现还可以。

  1. 为什么选择这么慢?
  2. 我能做些什么来加快速度吗?
0 投票
1 回答
5954 浏览

qt - 如何遍历 QAbstractItemView 索引?

我想以QAbstractItemView::doubleClicked编程方式为具有特定文本的项目触发插槽。如果可能的话,我想使用QAbstractItemView类而不是它的实现来做到这一点。

此任务归结为循环项目和比较字符串。但是我找不到任何可以给我所有QModelIndexes 的方法。给出任何QModelIndex不带参数的唯一方法是QAbstractItemView::rootIndex. 但是当我查看QModelIndex文档时,我再次看不到访问它的孩子和兄弟姐妹的方法。

那么如何访问所有QModelIndex的esQAbstractItemView呢?