问题标签 [qitemdelegate]

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

python - 如何阻止 Item Delegate 阻止 mousePressEvent

QTableView指定QAbstractTableModel为模型。并ItemDelegate(QItemDelegate)分配给tableView.openPersistentEditor. 现在,当单击 tableView 时,事件不会一直传播到 tableView (它是否被委托阻止QLineEditor)。

传递可用于完成任务的 mousePressEvent ItemDelegate QTableView 的模型 QItemInstance QItemDelegate` 标志的QLineEdit's方法event that is passed through theto什么when the tableView's item is clicked even while it is occupied by? Is there any

该代码创建了一个带有模型和委托的 tableView。通过单击第 0 列或第 1 列触发的事件不会传播到 tableView 的项目,因为该项目保持取消选中状态。

取消注释与tableView.setSelectionBehavior(QtGui.QTableView.SelectRows)修复问题的行。可以?

在此处输入图像描述

0 投票
1 回答
126 浏览

qtableview - paint 清除 qtableview 中的数据

我必须在 QTableView 中显示数据,我有一个包含数据的模型,但我将 QAbstractProxyModel 子类化以转置模型中的数据,此外,我只需要 QTableView 中的一个按钮,这可以通过子类化 QItemDelegate 来实现,现在问题是当我设置了 view->setItemDelegate(MyItemDelegate)(对于按钮); 视图->setModel(myModel); 视图->显示();...我在委托 QItemDelegate 时只找到我在绘制方法中绘制的按钮。我搜索并发现我需要 setModelData() 和 setEditorData() 来设置 myModel 中的值。但我不知道它是否正确,如果它是我如何 setdata()....提前谢谢

PS:-当我尝试查看时-> setModel(MyModel);视图->显示();没有 setItemDelegate ......我可以在 QTableView 中看到数据......但我在委派后看不到数据......所有这些痛苦只是为了 QTableView 中的 QPushButton

0 投票
1 回答
1357 浏览

python - 如何将 mousePressEvent 从 QItemDelegate 传递给 QTableView

该代码创建了一个 QTableView。左列预先填充了 QLineEdits 代表。右列未填充任何代表。

当单击左列的委托 QLineEdit 时,“单击”信号被委托项阻止,并且 tableView“单元格”永远不会被选中。

对于要选择的 tableView 项目,mousePressEvent应该能够一直通过委托项目到 tableView。除第 0 行外,其他所有索引行均未选择。如何使其适用于所有模型索引?

在此处输入图像描述

user1034749 发布的解决方案:

0 投票
1 回答
95 浏览

qt - 为什么没有#include在我的 delegate.h 文件中?

当我尝试在我的项目中添加委托文件时,我的代码有问题。我不知道为什么。我的操作如下。 我的操作

我的委托.h

教程如下:

我的文件设置有什么问题?为什么我会丢失 QObject *parent

0 投票
0 回答
3133 浏览

qt - 在 QTableWidget 中以不同方式对齐每一列

我需要创建一个这样的表

桌子

如何将第一列左对齐,第二列和第三列居中,最后一列右对齐,以便当有人输入数据时,它会自动对齐?

我的第一个代码:

我知道我们有类似的东西

但我不知道如何为一列的每一行设置它。

非常感谢 !

0 投票
2 回答
801 浏览

windows - 从 QItemDelegate 的自定义编辑器调用 getOpenFileName 时崩溃

先决条件:

我有一个自定义 QItemDelegate ,它为树视图项目创建自定义编辑器。编辑器由 QLineEdit 和 QToolButton 组成。该按钮用于打开文件对话框以选择文件并将其路径放入行编辑中。我使用对 QFileDialog::getOpenFileName 的调用来打开文件对话框。该对话框是本机 Windows 文件对话框(这很重要)。

第一次创建编辑器时,无论我多久按下该按钮,一切正常。但是在编辑器关闭并再次重新打开后,第一次按下按钮会导致崩溃。崩溃的原因是我的自定义编辑器最终被删除。

这是一些代码:

0 投票
1 回答
948 浏览

python - 有条件地更改连接到 QFileSystemModel 的 QListView 中文件的颜色

我有一个QListView和一个QFileSystemModel。根据 a 中的选择QTreeViewQListView显示文件夹的内容。
现在我需要根据某些条件更改文件名的颜色。
最初的想法是遍历 QListView 中的项目并根据条件是否满足为每个项目设置颜色。然而,这似乎是不可能的,因为setData()方法QFileSystemModel只接受对 的更改EditRole,而忽略类似 [see this ]

此处也已指出这一点 ,后者的建议是QItemDelegate为了对 QListView 中的项目进行着色而进行子类化。

因此,如果满足条件,我将其子类化QStyledItemDelegate并重新实现了以绿色显示文件名的方法 - 这工作正常。paint()然而它现在看起来有点难看:文件图标丢失了,“mouse_over”效果不再起作用。

虽然这个子类化无论如何都是一个混乱的解决方法,但我的顶级问题是

  • 有没有办法根据条件为QListView连接到的项目着色?QFileSystemModel

现在假设情况可能并非如此,并坚持 QItemDelegate 的子类化,

  • 有没有办法通过漂亮的选择和图标恢复原始行为?
  • 有谁知道哪个 ItemDelegate 最初用于 QListView 中的 QFileSystemModel 以及如何使用它?
  • 是否可以从那里获取它的源代码并复制paint方法?

这是一个使用子类化并显示所描述行为的最小代码。它使用QLineEdit一个可以输入字符串的位置,这样所有包含该字符串的文件都以绿色突出显示。

这是使用和不使用子类 QItemDelegate 的比较:

在此处输入图像描述

顺便提一下,这段代码的另一个问题是,一旦条件改变,需要将鼠标移动到 QFileView 来启动重绘。我想知道我可以使用哪个插槽连接到LineEdit.textChange信号直接执行此操作。

0 投票
1 回答
1592 浏览

c++ - Qt QItemDelegate 提交数据并在鼠标离开视图小部件(listView)时关闭编辑器

当鼠标离开时,我在调用 listView 的编辑器时遇到了问题。我设法解决了我的问题。这对我来说并不明显,所以我决定发布我的解决方案:

在委托头文件中,我创建了一个编辑器小部件指针,在构造函数中,我给了他值 Q_NULLPTR。

然后在 createEditor 中:

在 MyListView 头文件中,我创建了一个信号 saveToModelFromEditor(); 并发出信号

将数据提交到模型并关闭编辑器的函数,如果有人希望它关闭:

最后,我使用信号和槽机制将信号从 listView 连接到编辑器中的槽

我得到了来自不同社区(VoidRealms facebook 群组)的帮助。

希望这可以帮助这里的人。

0 投票
2 回答
2830 浏览

python - 如何创建组合框 QItemDelegate

我实现了以下委托,以在 QTableView 中提供一个组合框。用例是用文本等价物替换通常对用户无意义的列(键)(例如数字 id)。

下面的代码片段有效(也用于保存正确的值),但它有三个问题:

  1. 它显示原始值,而不是等效的文本。
  2. QTableView 中的一系列行提供了所有列,但不提供具有此委托的列。
  3. 理想情况下,我希望组合框显示为这样,而用户不必单击它来找出它是一个。

注意:键可以是任何字符串(不一定是整数)。一个典型的例子是国家(值“France”对应于键“FR”)。

0 投票
1 回答
446 浏览

c++ - QItemDelegate 中编辑器的大小

我有一个从 QItemDelegate 子类化的自定义委托,它在第一列中提供一个 QComboBox,在所有其他列中提供一个 QLineEdit。

editTrigger 已设置为 selectClicked。我希望组合框覆盖 QTableView 中的整个单元格。但是,现在它只是在左手角显示为光点。我尝试通过在 QTableView 上侦听 mousePressed 的事件过滤器传递单元格大小来设置最小大小。但是,委托中的相应槽永远不会被调用。这是代码:

MultiEventFilter.cpp:

安装在qApp上。

主窗口.cpp:

SensorDisplayDelegate.cpp 插槽:

其中 QSize editorSize 是私有成员。如何正确设置编辑器的大小?我需要一些通用的东西,也可以应用于 QLineEdit 编辑器。另外,关闭编辑器时是否有必要显式发出 commitData() ?我没有在任何涉及 QComboBox 的示例代码中看到这样做。