问题标签 [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.
python - 从 pyqt4 中的 QTableView 复制/粘贴多个项目?
我们可以使用 QTableView 从 QTableView 中选择多个项目(部分行和部分列)self.tableView.setSelectionMode(QAbstractItemView.ExtendedSelection)
,但是在选择一些行和列(部分和部分)后,如果我CTRL+C并将其粘贴到记事本中,它只会粘贴一个项目(来自 tableView 的一个值)?
我的代码:
我们如何复制和粘贴多个项目?
pyqt - 如何复制 - 将 QStandardItemModel 创建的 QTableView 中的多个项目粘贴到文本/excel 文件中?
如何将 QTableView 的多个项目/值复制并粘贴到文本/ excel 文件中?
我的代码:
此行self.tableView.setSelectionMode(QAbstractItemView.ExtendedSelection
有助于在 QTableView 中选择多个项目,但是当我执行CTRL+C并粘贴时,它只会粘贴最后一个项目或选择的值?
我已经看到了这条线self.tableView.setEditTriggers(QAbstractItemView.AllEditTriggers)
,但这条线仅适用于表格中的单个项目,并忽略了扩展选择。
请帮助我这是我第二次发布这个问题。现在,我想知道这是否可能?请让我知道任何人!
c++ - 双击时QTreeView编辑UserRole而不是DisplayRole
在我的项目中,我有一个QTreeView
显示来自QStandardItemModel
. 每个项目都有存储在多个 UserRoles 中的数据。
当用户双击一个项目时,将显示一个带有两行编辑的对话框,允许用户编辑部分 UserRole 数据。当编辑停止时,编辑会运行一些逻辑,并根据新的 UserRole 数据生成显示名称。
但是,这很快就会变得非常乏味。随着对话框不断弹出等等,这是一个缓慢而丑陋的解决方案。
我现在想完全删除对话框并在项目本身内显示行编辑小部件。默认情况下,双击一个项目来编辑它只显示一个行编辑小部件来更改显示角色。但是我想要两个行编辑来更改两个 USER 角色。然后正常的逻辑继续。
我将如何修改 a 的编辑项部分QTreeView
?
谢谢你的时间!
c++ - 以编程方式在 QAbstractItemView 中选择 QModelIndexes
我试图在给定字符串值的情况下在 Qt 中选择抽象项目视图的项目。我已经编写了QModelIndex
根据字符串内容查找任何内容的函数。
我现在正试图将QModelIndex
我找到的所有这些 es 放入单个选择中。我的方法签名:
我的实现看起来像这样(但不能正常工作):
问题是,这段代码总是只选择列表中的第一项,例如。因为"B1","C1","A1"
它看起来像这样:
该表启用了多选:
那么如何以编程方式正确选择多个项目?如果您需要findIndexByString
,可以在这里找到:https ://github.com/Darker/qt-gui-test/blob/master/results/QAbstractItemViewResult.cpp#L5
c++ - 为什么 QAbstractItemView::dragEnterEvent 总是被接受?
为什么QAbstractItemView::dragEnterEvent
不检查模型的canDropMimeData
方法?这会导致沿着小部件边界的 1 像素区域不正确,这始终是“正下降”,而不考虑模型是否真的可以接受数据?源代码包含注释“如果 mime 类型和动作匹配,则应始终接受拖动输入事件。”,但它没有解释任何内容。
qt - 自定义 QTreeView 的选择行为
如果节点是叶子,我有QTreeView
并且我想要多选行为,否则是单选行为,所以如果已经选择了某个节点,则不允许选择非叶子节点,如果非叶子节点,则不允许选择任何其他节点被选中。如何实施?
qt - 多选表,无需鼠标拖动选择
我希望它只允许通过按钮切换QAbstractItemView
来多选项目。ctrl
我不能使用QAbstractItemView::ExtandedSelection
,因为它还允许通过将鼠标拖到它们上来选择多个项目。
c++ - Qt:从视图中删除模型
我们通常在 Qt 中这样设置视图的模型:
view->setModel(model);
但是有没有办法从视图中删除模型?我的意思是把视图留空,就像它刚刚创建一样,并且还没有设置任何模型。
如果你问我渴望的原因,我有一个与这个人的帖子非常相似的案例。当第一个视图没有选择或者它是空的/无效的/什么时,我想让第二个视图实际上什么都不显示:没有标题、列、垃圾数据。在这种情况下,从视图中移除模型似乎是相当合理的。
我尝试了一个肮脏的黑客:
*view = QTableView();
但是 Qt 关心这些邪恶的事情并将其设为operator=
私有。
qt - 为什么 QAbstractItemView 在 MoveAction 拖放后删除元素?
我注意到在源代码中QAbstractItemView
,该方法在类型为 的拖动后void startDrag(Qt::DropActions supportedActions)
调用了一些私有方法,从而删除了选定的项目。clearOrRemove()
MoveAction()
关键是,当在同一个视图中发生放置操作时,我的模型使用 来实现该操作moveRows()
,因此行被移动然后clearOrRemove()
将它们删除,就好像它们是原始行一样。
我怎样才能防止最后一次删除?我是否错过了实现仅移动模型的惯用方式(意味着可以移动项目但不能添加/删除)?
qt - QAbstractItemView - fetchMoreTimer
我创建了动态加载模型,为修改后的 qTreeView 提供数据。一切似乎都运行良好。直到我意识到有时 GUI 会“等待”某些东西。它显示我的模型的 fetchMore 不时被调用。我发现在 QAbstractItemView(大多数视图的基类)中运行了“fetchMoreTimer”
- rowInserted AND/OR updateGeometires 被调用并启动计时器。
- 当计时器滴答作响时,它会触发 timerEvent
- timerEvent 导致 doItemsLayout()
- doItemsLayout() 询问 canFetchMore(它确实可以!我正在动态加载数百万行),因此模型获取更多。
一段时间后,计时器再次滴答作响......导致treeView几乎无休止地重新绘制(在主线程中作为所有GUI操作)。这可以防止例如内存昂贵的加载/保存。(保存与数百万行数据相关的加载数据。)
有人可以建议如何禁用 fetchMoreTimer(当然是在 QAbstractItemViewPrivate :/)我尝试子类化 timerEvent。但不幸的是,大约有 6 个不同的计时器触发了该事件,我不知道如何找出可以忽略的。
一些建议?