如何检测QTableView中的双击
我正在使用 PyQt 创建 GUI 应用程序。在继承自 QTableView 的视图中,需要检测用户双击行时选择的行。该表可以排序,但不能编辑。
我该怎么做?
注意 - 尝试了 doubleClicked(int) 信号。它是由鼠标按钮发出的,而不是由数据单元发出的,因此它从未被触发。 :(
伊恩
I'm using PyQt to create a GUI application. In a view inherited from QTableView, need to detect the row the user has selected when they double click a row. The table has sorting, but no editing.
How do I do it?
Note - tried the doubleClicked(int) signal. It is emitted by mouse buttons, not by data cells, so it was never fired. :(
Ian
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我不明白。
QTableView 的 doubleClicked 信号具有签名
如果连接该信号,您应该获得正确的 QModelIndex。
I dont understand.
The doubleClicked signal of the QTableView has the signature
If you connect that signal you should obtain the correct QModelIndex.
不再需要使用信号:
“doubleClicked”继承自 QAbstractItemView。
No need to use SIGNALs anymore:
"doubleClicked" being inherited from QAbstractItemView.
一旦你有了 modelIndex(来自上面 Frank 的评论),你就可以用它来查找双击了哪个单元格。
然后,您可以使用这些 row 和 col 值通过 table.setItem(row, column, newdata) 或其他表方法访问表
Once you have the modelIndex, (from Frank's comment above) you can use it to find which cell was double clicked.
You then can use these row and col values to access the table with table.setItem(row, column, newdata) or other table method
就像@regomodo所说,您可以简单地将您的函数连接到双击:
然后,如果您想知道用户双击了哪一行,您可以使用以下代码:
它将返回与该行或该行相对应的整数列号。
当双击删除先前的选择时,始终只有一个值。
如果将函数链接到按钮或其他信号,您可以收到一个包含用户选择的多个元素的列表。
例如,您可以使用以下代码轻松检索所有选定行的列表:
这将返回所有选定行的列表(set 函数还将删除任何重复项)。
干杯!
Like @regomodo said, you can simply connect your function to the double click via:
Then, if you want to know on which row the user double clicked, you can use the following code:
It will return an integer corresponding to the row or the column number.
There will always only be a single value as the double click remove the previous selection.
If you link your function to a push button or another signal, you can receive a list containing multiple elements selected by the user.
For example, you can easily retrieve a list of all selected rows using this code:
This will return a list of all selected rows (The set function will also remove any duplicates).
Cheers!