问题标签 [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.
qt - Qt:在数字字符串上使用 QSortFilterProxyModel 并获取错误的列文本时排序错误
我有简单的模型视图树视图,带有 QSortFilterProxyModel 代理对列进行排序,QStandardItemModel 作为模型
在每列中都有字符串可以很好地排序,但在包含数字(作为字符串)的列中排序错误。
说我有 9,12,1(当我对它们进行排序时,每个数字在不同的列中,我得到 1,12,9 或 12,1,9 但从来没有按正确的顺序。像 1,9,12 或 12,9,1为什么?
我还注意到,当我逐列排序时,当我尝试获取新的列文本时, m_model->item(iSelectedRow,0)->text();
我得到了初始列文本,但没有得到新的排序列文本。为什么?
qt - QTreeView & QAbstractItemModel & insertRow
我正在尝试为 QTreeView 实现 QAbstractItemModel。我在插入行时遇到问题。我注意到,如果我在应用程序的开头插入一切正常。但是如果我稍后插入行 - 在一些其他操作(如选择等)之后,新项目保持不可见。此外,QTreeView 似乎根本不起作用!我是否必须发出一些信号来通知 QTreeView 关于行插入?
这是我的插入方法:
LayersModelItem 是具有 QList 及其子项和数据的类。
我的项目的完整代码(需要 KDE 库)在这里: https ://github.com/coder89/PhotoFramesEditor/tree/v0.0.8 要查看问题,请在主窗口中选择一个蓝色项目,然后右键单击它并选择“删除项目”。(这个方法在 Canvas::removeItems() 中)并且它被完整地评论了 - 我很绝望,我试图找到这个问题的原因......(实际上它没有删除任何东西 - 它添加了新项目)。
感谢您的任何帮助和建议!
qt - QTreeView Horizontal Scrollbar problems
I've a problem with QTreeView horizontal scrollbar, it doesn't appear. I've set horizontal scrollbar policy to ScrollBarAsNeeded, but it doesn't appear if needed. Have tried to connect expanded and collapsed signals to a slot:
The slot consists of one line of code:
This makes scrollbar working, but only when I'm expanding/collapsing the tree view items.
I need to have working horizontal scrollbar "every time", from starting the application till its end. How can it be organized?
Thank you.
qt - 通过继承 QTreeView 创建类
我正在使用 Qt 开始一个项目。我正在尝试两种方法来让 View 执行以下一些操作。这个问题涉及到从QTreeView继承的方法。
我喜欢 QTreeView 所做的。我只想要一些附加功能。
首先,我想要的是创建一个层次结构树视图,它允许我查看包含其他类别的类别,列越往右越具体,直到它变得最具体。指标显示在包含最具体列的行上。包含每个通用列的视图行将是粗体并包含每个指标的摘要,由模型(或视图?)计算。就最具体的列而言,指标将位于模型中的每一行。
例如,考虑具有以下数据的模型(最后 3 列包含数字):
国家|省-州|县-教区|城镇|人口|人均收入|沃尔玛
所以我的观点看起来与此类似:
其次,我需要它与 QSqlTableModel 一起工作。我以前看过它显示模型,但它没有任何方法可以按层次结构创建行,类似于上面。那将是我的第二次修改。
第三个原因是粗体标题只有在您通过以下方式打开排序时才可以选择:
当排序打开时,粗体标题仅适用于较高的行,然后在较低的行上关闭。我想修复那个错误。
QTreeView::drawRow 虚拟方法看起来是我完成第一个挑战(也许是第三个挑战)所需的全部。处理 QSqlTableModel 的第二个挑战,我不太确定。
无论如何,我构建了一个从 QTreeView 继承的简单类,它带有一个通用 ctor 和 dtor,它只调用 QTreeView 方法。然而,对于 drawRow,我遇到了以下问题。QTreeView::drawRow 函数的开头是这样的:
该函数依赖于 Q_D(const QTreeView) 成功运行并返回“d”,这是 QTreeViewPrivate 类的一个实例,其中包含与布局和函数其余部分相关的重要信息。由于我继承了我的 CustomTreeView 类,如果我要在 CustomTreeView::drawRow() 中运行 Q_D(const QTreeView),则必须首先定义和实例化 CustomTreeViewPrivate。
创建这个私有类真的有必要继承和做出重大改变吗?如果我能做的只是一些敷衍的过程,然后调用 QTreeView::drawRow 进行实际绘图,那么继承这里有什么好处?
我想改变它的绘图方式。
c++ - QAbstractItemModel data() is NEVER called
I'm attempting to create a QTreeView and use a custom model for it. I have placed qDebug()
statements at various places, and I have determined that data()
is never being called. How can I fix this problem?
The model's code is below
The code from the MainWindow where the view is located is below.
I should mention that the header does display for this model. However, even when I set an item, nothing is displayed in the widget save the header.
Oh and NeuralNetwork
is a sub of NeuralNode
.
c++ - 在 QTreeView 中维护checkedstatus 继承
我正在尝试做一些基本的事情:你有一个QTreeView
. 第一深度仅是文件夹,第二深度仅是文件。我想在每个项目旁边有一个带有选中状态的复选框。文件被选中或未选中,文件夹也可以根据文件进行部分检查;总而言之,我相信很自然。
我应该采用的方式是使用 a并使用:QStandardItemModel
的自定义子类填充它。也许这是一个坏主意,如果有更简单的方法,请启发我。 QStandardItem
DescriptionFileItem
我尝试使用信号和插槽,以便将CheckStateChanged
文件上的信号连接到UpdateCheckedStateOnChildStateChanged
其包含文件夹上的插槽。这也需要我DescriptionFileItem
继承自QObject
(顺便说一句,我很惊讶QStandardItem
没有继承自QObject
)。我最初希望这将与提供的基类无缝工作,但它没有:emitDataChanged()
似乎没有触发我模型的 dataChanged() 信号......
直接使用模型的dataChanged
信号也不起作用:它的调用是受保护的,所以你不能在没有子类化的情况下使用它(我认为这是我的下一步行动,除非有人能帮我把它弄好)。
目前我有一个信号 -> 插槽连接不起作用,我不知道为什么;编译和链接工作正常。这是代码;也许你会很容易发现我的错误。我留下了一些注释行,这样你就可以看到我在之前的尝试中做错了什么。感谢您的输入!
对应的 .cpp :
以及连接/树的构建:
编辑:最终答案,感谢 stu(见下文)
c++ - QTreeView 孩子总是指向第一个顶级节点
我遵循了 Qt 提供的 editableTreeView 示例,但遇到了一个有趣的问题。可以正确添加顶级项目,但如果我要给其中一个孩子,它是指向第一个顶级项目的指针。
我的 QAbstractItemModel 代码如下。
NeuralNode(树的项目)的代码如下所示
这是我注意到的。
- 从我的模型中跟踪 index() 调用确实会返回顶级节点子节点的索引。
- 调用 ui->treeView->selectedModel()->currentIndex()总是返回一个无效的索引(根)。ui->treeView->currentIndex() 也是如此。
我闻到某个地方的指针有问题,但我找不到。任何帮助将不胜感激。
耶克
编辑:这是问题的粗略图形
目前:
我想要的是:
其中 A、B、C 和 D 是唯一的神经节点。我应该在树中没有重复项。
再次感谢。
c++ - Qt QTreeView:只允许放在现有项目上
我有一个继承自 QTreeView 的自定义模型。我已启用拖放功能,目前可以将项目拖放到树上。但是,您当前可以拖放到现有项目或项目之间。我想限制这一点,以便您只能放入现有项目。
我已将 DragDropOverwriteMode 设置为 true(实际上这是 QTreeView 的默认设置)。但是,这并不能阻止您在项目之间放置 - 它只是意味着您也可以放置到现有项目上。
我知道我可以忽略 dropMimeData 中的“插入”删除(我正在重新实现),通过检查行和列是否有效(删除到现有项目的行和列设置为 -1,父项设置为当前项目)和我正在这样做。但是,我不想得到这些滴。IE。我希望你总是在上面的项目或下面的项目上掉下来,而不是在项目之间。
有任何想法吗?
感谢您的任何建议,贾尔斯
python - QTreeView 中的超链接
我试图在 QTreeView 中显示可点击的链接。我已经创建了自己的 QStyledItemDelegate,我可以绘制看起来像链接但不能像链接那样可点击的文本。
我正在考虑的一个选项是创建一个带有链接的 QLabel,并在 QTreeView 单元格中绘制 QLabel。唯一的问题是我不知道如何将 QLabels 添加到 QTreeView。
有任何想法吗?
python - 没有 QLabel 的 QTreeView 中的超链接
我试图在我的 QTreeView 中显示可点击的超链接。
根据这个问题的建议,我能够使用 QLabels 和 QTreeView.setIndexWidget 做到这一点。
不幸的是,我的 QTreeView 可能相当大(1000 个项目),并且创建 1000 个 QLabels 很慢。
好处是我可以在 QTreeView 中使用 Delegate 来绘制看起来像超链接的文本。这是超级快。
现在的问题是我需要它们像超链接一样响应(即鼠标悬停手形光标、响应点击等),但我不确定最好的方法是什么。
我已经能够通过连接到 QTreeView 的 clicked() 信号来伪装它,但它并不完全相同,因为它响应整个单元格,而不仅仅是单元格内的文本。