查看完整版本: [-- qtreewidget installeventfilter使用请教问题 --]

QTCN开发网 -> Qt基础编程 -> qtreewidget installeventfilter使用请教问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

fengwujiutan 2019-10-24 10:22

qtreewidget installeventfilter使用请教问题

请教一下:
      我现在想要的结果是,鼠标在QTreeWidget上移动,获取鼠标的坐标值,我现在采用事件过滤器的方法,但是遇到一个问题是,捕捉不到MouseButtonPress及MouseMove等响应,不知什么原因?请大神们给点指教,非常感谢

liulin188 2019-10-24 10:48
installeventfilter可以接收原始windows消息,有例子

fengwujiutan 2019-10-24 10:54
liulin188:installeventfilter可以接收原始windows消息,有例子 (2019-10-24 10:48) 

谢谢您的回复
现在我这里可以接收到QEvent::Enter等响应,但是就是接受不到鼠标点击的响应

fengwujiutan 2019-10-24 11:10
我尝试过给QPushButton添加事件过滤器后,鼠标点击、移动都能获取到,就是QTreeWidget添加事件过滤器后,获取不到鼠标点击的响应

dbzhang800 2019-10-24 14:14
QWidget *QAbstractScrollArea::viewport() const

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

fengwujiutan 2019-10-24 16:00
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 2019-10-24 16:32
你点在了QTreeWidget上还是QTreeWidgetItem上

fengwujiutan 2019-10-24 16:38
hgx123:你点在了QTreeWidget上还是QTreeWidgetItem上 (2019-10-24 16:32) 

点在QTreeWidgetItem上

fengwujiutan 2019-10-25 08:58
有没有遇到过该问题的?帮忙解决一下

fengwujiutan 2019-10-26 09:17
结贴了
换了一种方法,不使用installeventfilter方法了,重写QTreeWidget实现了想要的结果


查看完整版本: [-- qtreewidget installeventfilter使用请教问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled