问题标签 [qtreeview]

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

qt - QGLWidget 上的上下文菜单问题

我对 QGLWidget 和 QTreeView 上的自定义上下文菜单有疑问。我将 QTreeview 和 QGLWidget 添加到带有拆分器的通用小部件中。我通过以下代码打开上下文菜单。

actions 是 QActions 的列表。

在 QGLWidget 上按下鼠标时,如果满足某些条件,鼠标光标会发生变化。右键单击打开上下文菜单后,如果在其中一个菜单项上按下鼠标,一切都很好。如果在上下文菜单的一项上没有发生鼠标按下,则上下文菜单关闭并且问题开始。问题是即使在按下鼠标时满足所有条件,鼠标光标也不会改变。我不确定 QWidget 是否在这里失去焦点。所以,我尝试在鼠标按下事件中设置焦点。但帮助不大。任何解决此问题的建议。

谢谢!

0 投票
2 回答
358 浏览

c++ - Qt QTreeView - 当条件不满足时恢复到以前的选择

在 QTreeView 选择更改时,如果不满足某个条件,我想恢复到以前的选择。

例如:

目前我没有看到直接的方法来做到这一点,因为QModelIndex它没有提供任何关于之前选择的信息。

有没有人对实现这一点的最佳方法有任何建议?

0 投票
2 回答
991 浏览

qt - Qt 自定义模型需要做什么才能启用 drop?

我正在尝试在我连接到的自定义模型上启用 drop QTreeView

我做了以下事情:

  • 确保在QTreeView
  • 在我的自定义模型supportedDropActions上实现return Qt::CopyAction | Qt::MoveAction
  • 在我的自定义模型上实现mimeType以返回QStringList带有 text/uri-list 的
  • 在我的自定义模型上实施dropMimeData以处理掉落(如果发生)。

这就是我让它在QTreeWidget.

我继续:

  • 实现的标志return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;

然而,当我运行我的应用程序并尝试将 Windows 中的文件拖到我QTreeView的 .

我还需要做什么才能启用 Drop?

0 投票
1 回答
4041 浏览

qt - Qt错误“持久模型索引损坏”为什么?

我的 Qt/面试应用程序有问题。我使用 QTreeView 来显示树数据。我基于 QAbstractItemModel 实现了我自己的模型。

在应用程序崩溃之前出现以下错误。添加新记录后经常发生这种情况。

您能否向我解释一下这个错误的含义。什么是 QPersistentModelIndex ?我没有在我的代码中使用 QPersistentModelIndex。

谢谢。

0 投票
1 回答
4099 浏览

qt - QTreeView / QAbstractItemModel - 添加项目并使用 beginInsertRows

我正在基于 QAbstractItemModel 实现我的模型,并将它与 QTreeView 一起使用来显示分层数据。数据存储在 sqlite 表中。

我的问题是添加子节点时应该如何调用 beginInsertRows。假设我有一些父节点,它包含 10 个子节点。我想添加新的子节点(最后)。

我这样做是这样的:

currentNodesCount 包含值 10,这是该子节点中的行数。新节点将放置在第 11 个位置(从 0 开始计数的第 10 个)。

这个逻辑正确吗?

感谢帮助。


我也想知道使用 beginRemoveRows。

它是否正确:

currentRow 包含从 0 开始计数的已移除节点列表中的位置。

0 投票
3 回答
9185 浏览

python - 以编程方式获取和设置 QTreeview 中的活动行 (PyQt)

有没有办法获取和更改 QTreeView(不是 QTreeWidget)中的活动行?所谓活动,是指具有焦点突出显示的行,而不是选定的行。在绘画事件中,我可以QStyle.State_HasFocus用来获取活动行,但这似乎不适用于其他地方。

0 投票
2 回答
2810 浏览

qt - QAbstractItemModel + QTreeView 什么会导致项目变得不可选择?

我正在尝试基于 QAbstractItemModel 创建自己的模型。它似乎工作正常。它通过了模型测试断言。

当我删除一行时,我遇到了这个奇怪的问题。删除操作正常。但随后其他行变得不可选择(不是全部)。你有没有遇到过这样的行为?

在哪些情况下 QTreeView 可以决定该行不能被选中?

有任何想法吗 ?如果需要,我可以提供整个模型实现。


编辑:作为替代方案,我正在寻找一个 100% 工作的 QAbstractItemModel + QtSql + QTreeView 实现的例子。模型应该提供添加和删除方法,并且必须通过模型测试。这也将回答我的问题:-)


编辑:下面是我的源代码。压缩一点使其更小

ps 我现在看到 parent() 实现中有一个错误。删除 nodeParams[*].row 中的行值后包含不正确的位置。您如何在不将整个树加载到内存的情况下解决此问题?

0 投票
1 回答
1053 浏览

qt - Qt:使用 QtSql 实现 QAbstractItemModel 的示例(与 QTreeView 一起使用)

我正在寻找与 QTreeView 一起使用的 QAbstractItemModel 的示例实现。该模型应该从 QSqlQuery 加载数据,并且应该以“懒惰”的方式进行。换句话说,我只想加载打开的节点/父节点的记录。我想看看如何在这个模型中正确添加和删除记录。

我尝试自己实现这样的模型,但遇到了很多不同的错误,尤其是当我开始添加和删除行时。

如果你知道我在哪里可以找到这样的例子,我将不胜感激。

谢谢 :)

0 投票
3 回答
5663 浏览

c++ - 如何使用 QSortFilterProxyModel 过滤仅显示子节点及其父节点的树模型?

我有一个从 QAbstractItemModel 派生的工作树模型,我希望使用 QSortFilterProxyModel 子类对其进行过滤,以仅显示某些条件的子节点。例如,我有以下树:

我想过滤这棵树,条件是节点的名称 == C1,并且只显示具有 C1 的节点及其子节点,如下所示:

我已经有一个重新实现了 filterAcceptsRow() 的子类,它可以部分做我想要的,但它仍然会显示 C1 节点的父节点和祖父节点:

我认为这是因为要考虑子节点,他们的父节点必须通过 filterAcceptsRow() 测试,对吗?我怎样才能实现 filterAcceptRows() 或其他方法,以便它可以做我所描述的?

我曾经在 qtcentre 和 qtforum 上问过这个问题,但没有得到任何有用的答复。我尝试使用 filterAcceptsRow() 中的 beginMoveRows 和 endMoveRows 直接移动 QSortFilterProxyModel 子类的索引,但这只是由于危险的 const_cast 而导致测试应用程序崩溃。

0 投票
1 回答
4213 浏览

qt - QTreeView 绘制下降指示器

我需要在 QTreeView 中通过拖放实现行移动,并在行之间显示放置指示器。我想知道是否有一种方法可以覆盖指标绘图,因此它仅显示在行之间的所有层次结构(不是项目周围的矩形),该行必须与整行一样宽(而不是一列)。