QTableView:更改激活触发器以双击的最佳方法

时间:2011-08-23 17:59:27

标签: qt

在我的应用程序中,我有一个项目的桌面视图和一个侧面板“预览”:最新选择的项目。

我希望点击某个项目来更改选择,然后双击以执行“运行”动作。更具体地说,我希望“run”-action(包括键导航和按Enter键)绑定到表格行中项目的“激活”。

我的问题是;单击不仅会更改选择,还会触发项目上的“激活”信号。我想调整它:

导航键,单个鼠标单击:选择更改,更新预览面板 输入键,双键鼠标单击:激活/运行/打开操作触发。

是否有一个很好的干净方法,或者覆盖onclick / doubleclick事件我最好的选择?或者是否有其他表格列表小部件更适合我的需求?

2 个答案:

答案 0 :(得分:3)

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

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

  1. 对你的tableview进行子类化,覆盖doubleClickEvent()和keyPressEvent()并在那里激活你的自定义信号,可能还有模型索引或其他东西作为参数。然后将您的run方法连接到您自己的信号,因为您可以完全控制它何时被触发。
  2. 如果您不想进行子类化,可以使用installEventFilter()机制。

答案 1 :(得分:0)

要么我的方法错了,要么我太累了,但是如果你想触发一个跑步事件,你应该完全避免激活的信号。设置信号插槽机制,以便双击和Enter键按下事件触发run()函数,然后单击/导航按钮应触发“激活”插槽,它将在tableview中返回索引。

我非常肯定Qt希望您明确指出哪个信号指向哪个插槽或它将忽略它或指向默认值。