问题标签 [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.
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 the
是to
什么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)
修复问题的行。可以?
qtableview - paint 清除 qtableview 中的数据
我必须在 QTableView 中显示数据,我有一个包含数据的模型,但我将 QAbstractProxyModel 子类化以转置模型中的数据,此外,我只需要 QTableView 中的一个按钮,这可以通过子类化 QItemDelegate 来实现,现在问题是当我设置了 view->setItemDelegate(MyItemDelegate)(对于按钮); 视图->setModel(myModel); 视图->显示();...我在委托 QItemDelegate 时只找到我在绘制方法中绘制的按钮。我搜索并发现我需要 setModelData() 和 setEditorData() 来设置 myModel 中的值。但我不知道它是否正确,如果它是我如何 setdata()....提前谢谢
PS:-当我尝试查看时-> setModel(MyModel);视图->显示();没有 setItemDelegate ......我可以在 QTableView 中看到数据......但我在委派后看不到数据......所有这些痛苦只是为了 QTableView 中的 QPushButton
windows - 从 QItemDelegate 的自定义编辑器调用 getOpenFileName 时崩溃
先决条件:
我有一个自定义 QItemDelegate ,它为树视图项目创建自定义编辑器。编辑器由 QLineEdit 和 QToolButton 组成。该按钮用于打开文件对话框以选择文件并将其路径放入行编辑中。我使用对 QFileDialog::getOpenFileName 的调用来打开文件对话框。该对话框是本机 Windows 文件对话框(这很重要)。
第一次创建编辑器时,无论我多久按下该按钮,一切正常。但是在编辑器关闭并再次重新打开后,第一次按下按钮会导致崩溃。崩溃的原因是我的自定义编辑器最终被删除。
这是一些代码:
python - 有条件地更改连接到 QFileSystemModel 的 QListView 中文件的颜色
我有一个QListView
和一个QFileSystemModel
。根据 a 中的选择QTreeView
,QListView
显示文件夹的内容。
现在我需要根据某些条件更改文件名的颜色。
最初的想法是遍历 QListView 中的项目并根据条件是否满足为每个项目设置颜色。然而,这似乎是不可能的,因为setData()
方法QFileSystemModel
只接受对 的更改EditRole
,而忽略类似 [see this ]
此处也已指出这一点
,后者的建议是QItemDelegate
为了对 QListView 中的项目进行着色而进行子类化。
因此,如果满足条件,我将其子类化QStyledItemDelegate
并重新实现了以绿色显示文件名的方法 - 这工作正常。paint()
然而它现在看起来有点难看:文件图标丢失了,“mouse_over”效果不再起作用。
虽然这个子类化无论如何都是一个混乱的解决方法,但我的顶级问题是
- 有没有办法根据条件为
QListView
连接到的项目着色?QFileSystemModel
现在假设情况可能并非如此,并坚持 QItemDelegate 的子类化,
- 有没有办法通过漂亮的选择和图标恢复原始行为?
- 有谁知道哪个 ItemDelegate 最初用于 QListView 中的 QFileSystemModel 以及如何使用它?
- 是否可以从那里获取它的源代码并复制paint方法?
这是一个使用子类化并显示所描述行为的最小代码。它使用QLineEdit
一个可以输入字符串的位置,这样所有包含该字符串的文件都以绿色突出显示。
这是使用和不使用子类 QItemDelegate 的比较:
顺便提一下,这段代码的另一个问题是,一旦条件改变,需要将鼠标移动到 QFileView 来启动重绘。我想知道我可以使用哪个插槽连接到LineEdit.textChange
信号直接执行此操作。
c++ - Qt QItemDelegate 提交数据并在鼠标离开视图小部件(listView)时关闭编辑器
当鼠标离开时,我在调用 listView 的编辑器时遇到了问题。我设法解决了我的问题。这对我来说并不明显,所以我决定发布我的解决方案:
在委托头文件中,我创建了一个编辑器小部件指针,在构造函数中,我给了他值 Q_NULLPTR。
然后在 createEditor 中:
在 MyListView 头文件中,我创建了一个信号 saveToModelFromEditor(); 并发出信号
将数据提交到模型并关闭编辑器的函数,如果有人希望它关闭:
最后,我使用信号和槽机制将信号从 listView 连接到编辑器中的槽
我得到了来自不同社区(VoidRealms facebook 群组)的帮助。
希望这可以帮助这里的人。
python - 如何创建组合框 QItemDelegate
我实现了以下委托,以在 QTableView 中提供一个组合框。用例是用文本等价物替换通常对用户无意义的列(键)(例如数字 id)。
下面的代码片段有效(也用于保存正确的值),但它有三个问题:
- 它显示原始值,而不是等效的文本。
- QTableView 中的一系列行提供了所有列,但不提供具有此委托的列。
- 理想情况下,我希望组合框显示为这样,而用户不必单击它来找出它是一个。
注意:键可以是任何字符串(不一定是整数)。一个典型的例子是国家(值“France”对应于键“FR”)。
c++ - QItemDelegate 中编辑器的大小
我有一个从 QItemDelegate 子类化的自定义委托,它在第一列中提供一个 QComboBox,在所有其他列中提供一个 QLineEdit。
editTrigger 已设置为 selectClicked。我希望组合框覆盖 QTableView 中的整个单元格。但是,现在它只是在左手角显示为光点。我尝试通过在 QTableView 上侦听 mousePressed 的事件过滤器传递单元格大小来设置最小大小。但是,委托中的相应槽永远不会被调用。这是代码:
MultiEventFilter.cpp:
安装在qApp上。
主窗口.cpp:
SensorDisplayDelegate.cpp 插槽:
其中 QSize editorSize 是私有成员。如何正确设置编辑器的大小?我需要一些通用的东西,也可以应用于 QLineEdit 编辑器。另外,关闭编辑器时是否有必要显式发出 commitData() ?我没有在任何涉及 QComboBox 的示例代码中看到这样做。