• 3104阅读
  • 9回复

[提问]qtreewidget installeventfilter使用请教问题 [复制链接]

上一主题 下一主题
离线fengwujiutan
 

只看楼主 倒序阅读 楼主  发表于: 2019-10-24
请教一下:
      我现在想要的结果是,鼠标在QTreeWidget上移动,获取鼠标的坐标值,我现在采用事件过滤器的方法,但是遇到一个问题是,捕捉不到MouseButtonPress及MouseMove等响应,不知什么原因?请大神们给点指教,非常感谢
没伞的孩子应努力奔跑
离线liulin188

只看该作者 1楼 发表于: 2019-10-24
installeventfilter可以接收原始windows消息,有例子
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线fengwujiutan

只看该作者 2楼 发表于: 2019-10-24
回 liulin188 的帖子
liulin188:installeventfilter可以接收原始windows消息,有例子 (2019-10-24 10:48) 

谢谢您的回复
现在我这里可以接收到QEvent::Enter等响应,但是就是接受不到鼠标点击的响应
没伞的孩子应努力奔跑
离线fengwujiutan

只看该作者 3楼 发表于: 2019-10-24
我尝试过给QPushButton添加事件过滤器后,鼠标点击、移动都能获取到,就是QTreeWidget添加事件过滤器后,获取不到鼠标点击的响应
没伞的孩子应努力奔跑
离线dbzhang800

只看该作者 4楼 发表于: 2019-10-24
QWidget *QAbstractScrollArea::viewport() const

QTreeWidget 中的鼠标事件,你是指viewport上的鼠标事件吧
离线fengwujiutan

只看该作者 5楼 发表于: 2019-10-24
回 dbzhang800 的帖子
dbzhang800:QWidget *QAbstractScrollArea::viewport() const
QTreeWidget 中的鼠标事件,你是指viewport上的鼠标事件吧 (2019-10-24 14:14) 

不太明白你说的,我这里是这样的
Qtreewidget *treeWidget=new Qtreewidget 之后为该控件安装EventFilter
然后想截获在该控件上点击的事件
bool widget::eventFilter(QObject *kj,Qevent *sj)
{
if(kj==treeWidget)
{
if(sj->type()==Qevent::MouseButtonPress)
{
QMouseEvent *me=static_case<QMouseEvent * >(sj)
if(sj->button==Qt::LeftButton)
{
     qdebug<<tr("进入此处")
}
}

问题是在treeWidget上点击事件根本没有进入这里边,Qdebug也没有打出来,请问是什么情况?
没伞的孩子应努力奔跑
离线hgx123

只看该作者 6楼 发表于: 2019-10-24
你点在了QTreeWidget上还是QTreeWidgetItem上
离线fengwujiutan

只看该作者 7楼 发表于: 2019-10-24
回 hgx123 的帖子
hgx123:你点在了QTreeWidget上还是QTreeWidgetItem上 (2019-10-24 16:32) 

点在QTreeWidgetItem上
没伞的孩子应努力奔跑
离线fengwujiutan

只看该作者 8楼 发表于: 2019-10-25
有没有遇到过该问题的?帮忙解决一下
没伞的孩子应努力奔跑
离线fengwujiutan

只看该作者 9楼 发表于: 2019-10-26
结贴了
换了一种方法,不使用installeventfilter方法了,重写QTreeWidget实现了想要的结果
没伞的孩子应努力奔跑
快速回复
限100 字节
 
上一个 下一个