我将 QTreeWidget 的 itemDoubleClick(QTreeWidgetItem *,int) 信号和slot连接之后发现:不光鼠标左键双击会发出该信号,右键双击也会。
而我只需要在左键双击的时候出发该信号。
于是我扩展了 QTreeWidget 类。
我试着去qt助手里查阅了一下,发现QTreeWidget有个叫做 mouseDoubleClickEvent(QMouseEvent *) 的虚函数,该函数执行时会发出
doubleClick(const QModelIndex &) 这个信号。通过查看QTreeWidget 的源码,我发现正是这个doubleClick信号激活了itemDoubleClick 信号,
(doubleClick 是QTreeWidget 的父类 QAbstractItemView 的一个信号。)
于是我模仿doubleClick 激活 itemDoubleClick 的方法实现了 mouseDoubleClickEvent(QMouseEvent *) 如下:
void MyTreeWidget::mouseDoubleClickEvent(QMouseEvent *event)
{
if(event->button()==Qt::RightButton) //这段貌似不要也行
{
event->ignore();
}
else
{
event->accecp();
QTreeWidgetItem *item=this->currentItem();
emit leftDoubleClicked(item,this->currentIndex().column()); //这一行便是模仿doubleClick 激活 itemDoubleClick的
}
}
用以上方法我确实成功实现了只响应左键双击。
但是,我想请教各位的是,有没有其他的方法来排除对鼠标右键的响应呢?
我是QT的初学者,可能很多问题只要设置一下某个属性即可解决,以上是我没有办法的办法~
望有识者赐教啊~谢谢