• 9066阅读
  • 2回复

关于QTreeWidget 中 itemDoubleClick信号的问题 [复制链接]

上一主题 下一主题
离线2zcool
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-12
— 本帖被 XChinux 执行加亮操作(2010-09-04) —
我将 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的初学者,可能很多问题只要设置一下某个属性即可解决,以上是我没有办法的办法~
望有识者赐教啊~谢谢
离线米饭拌面

只看该作者 1楼 发表于: 2010-08-15
Qt里左键双击和右键双击或者中键双击都是双击事件、、、你只能是自己在双击后判断是不是左键双击了。
QQ:32336134
离线tangxunmin

只看该作者 2楼 发表于: 2010-08-15
在响应函数里判断是哪个键  是最简单的方法
快速回复
限100 字节
 
上一个 下一个