如何禁止鼠标的双击功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁止鼠标的双击功能?相关的知识,希望对你有一定的参考价值。

注册表?组策略?

参考技术A 控制面板里的鼠标属性,你把那个双击频率向右调一下就好了。
把鼠标的键用手抠着向上掰一下试试,
参考技术B 双击我的电脑——上面选 工具——选文件夹选项——常规里下面在“打开项目的方式”选“通过单击打开项目(指向时选定)”就是单击了 参考技术C 控制面板里的鼠标属性 参考技术D 让我操作就会,让我说就不知道… 第5个回答  2008-07-31 控制面板的鼠标

如何检测 QTableView 中的双击

【中文标题】如何检测 QTableView 中的双击【英文标题】:How to detect doubleClick in QTableView 【发布时间】:2011-05-18 11:07:13 【问题描述】:

我正在使用 PyQt 创建一个 GUI 应用程序。在继承自 QTableView 的视图中,需要检测用户双击一行时选择的行。该表有排序,但没有编辑。

我该怎么做?

注意 - 尝试了 doubleClicked(int) 信号。它是由鼠标按钮发出的,而不是由数据单元发出的,因此它从未被触发。 :(

伊恩

【问题讨论】:

【参考方案1】:

我不明白。 QTableView 的 doubleClicked 信号有签名

void doubleClicked ( const QModelIndex & index )

如果您连接该信号,您应该获得正确的 QModelIndex。

【讨论】:

我尝试了 self.connect(self.tableView,SIGNAL("doubleClicked()"), self.dblClickHandler) 和 self.connect(self.tableView,SIGNAL("doubleClicked(int)") , self.dblClickHandler) - 来自点击的例子。还尝试了 clicked() 和 mouseDoubleClickEvent()。没有触发 我从未尝试过 python 绑定,但您可以尝试 self.connect(self.tableView,SIGNAL("doubleClicked(const QModelIndex&)"), self.dblClickHandler) 如果 const type& 是一个地址(我不太懂 c++),那么这就是 doubleClicked(int) 版本。 不,信号通过字符串标识符连接。因此 SIGNAL() 中的引号 应该是'doubleClicked(QModelIndex)'。【参考方案2】:

不再需要使用信号:

self.your_table.doubleClicked.connect(your_function)

"doubleClicked" 继承自 QAbstractItemView。

【讨论】:

我知道这个线程有点老了,但是当我在做类似的事情时,如何才能在我双击的特定单元格中获取值?【参考方案3】:

一旦你有了modelIndex,(来自上面弗兰克的评论)你可以用它来找到哪个单元格被双击了。

def slotDoubleClicked(self, mi):
    row = mi.row()
    column = mi.column()

然后您可以使用这些 row 和 col 值通过 table.setItem(row, column, newdata) 或其他表格方法访问表格

【讨论】:

【参考方案4】:

就像@regomodo 所说,您可以通过以下方式简单地将您的功能连接到双击:

self.your_table.doubleClicked.connect(your_function)

那么,如果你想知道用户双击了哪一行,你可以使用下面的代码:

for idx in self.your_table.selectionModel().selectedIndexes():
        row_number = idx.row()
        column_number = idx.column()

它将返回一个与行号或列号对应的整数。 当双击删除先前的选择时,将始终只有一个值。

如果您将函数链接到按钮或其他信号,您可以收到包含用户选择的多个元素的列表。

例如,您可以使用以下代码轻松检索所有选定行的列表:

rows = []
for idx in self.your_table.selectionModel().selectedIndexes():
    rows.append(idx.row())
rows = list(set(rows))

这将返回所有选定行的列表(set 函数还将删除所有重复项)。

干杯!

【讨论】:

以上是关于如何禁止鼠标的双击功能?的主要内容,如果未能解决你的问题,请参考以下文章

第二十二篇 -- 事件与信号(自定义label信号的双击功能)

如何设置禁止鼠标双击打开文件

c# 为自定义控件添加鼠标双击事件

双击鼠标触发了Ctrl+C事件

如何检测 QTableView 中的双击

如何禁用 d3.behavior.zoom 的双击缩放?