QTableView:将激活触发器更改为双击的最佳方式



在我的应用程序中,我有一个表视图的项目,和一个侧面面板"预览":最新选定的项目。

我想点击一个项目来改变选择,双击来执行"运行"操作。更具体地说,我希望"运行"操作(包括键导航和按enter键)绑定到表行中项目的"激活"。

我的问题是;单次点击不仅改变选择,而且在项目上触发"激活"信号。我想把它调整为:

导航键,单鼠标点击:选择-更改,更新预览面板回车键,双击鼠标:激活/运行/打开动作触发。

是否有一个很好的干净的方法来做到这一点,或者重写onclick/双击事件我的最佳选择?或者是否有其他更适合我需要的表格列表小部件?

我将把预览动作的插槽连接到表视图的selectionModel()的currentChanged()信号。这包括点击和键导航。

然后双击和按Enter键有两个选项:

  1. 子类你的tableview,重写doubleClickEvent()和keyPressEvent()并在那里触发你的自定义信号,也许模型索引或其他东西作为参数。然后,只需将您的运行方法连接到您自己的信号,因为您可以完全控制何时触发。
  2. 如果你不想子类化,你可以使用installEventFilter()机制。

要么我得到你的方法是错误的,要么我太累了,但如果你想触发一个运行事件,你应该完全避免激活信号。设置信号槽机制,这样你的双击和回车键事件触发你的run()函数,然后单点击/导航按钮应该触发激活槽,它将返回你在tableview中的索引。

我很确定Qt希望你明确哪个信号指向哪个槽,否则它会忽略它或指向默认值。

最新更新