• 6407阅读
  • 5回复

[提问]关于eventFilter [复制链接]

上一主题 下一主题
离线myseemylife
 

只看楼主 倒序阅读 楼主  发表于: 2011-06-09
一直不懂QT事件的东东。。。。
写了一个测试的程序,见附件~~~
eventFilter()截获不到事件~~
那位帮忙看看代码吧~~先谢了

class testMouseEvent : public QWidget
{
Q_OBJECT
public:
testMouseEvent(QWidget *parent = 0, Qt::WFlags flags = 0);
~testMouseEvent();
void mousePressEvent(QMouseEvent *event);
bool eventFilter(QObject *target, QEvent *event);
private:
Ui::testMouseEventClass ui;
QTreeWidget *treeWidget;
QTreeWidgetItem *treeItem;
};


bool testMouseEvent::eventFilter(QObject *target, QEvent *event)
{
if (target == treeWidget)
{
  QMessageBox::information(this,tr("qwe"),tr("%1").arg("button press!"));
  if (event->type() == QEvent::MouseButtonPress)
  {
   QMessageBox::information(this,tr("qwe"),tr("%1").arg("button press!"));
   return true;
  }
}
return QWidget::eventFilter(target, event);

}


testMouseEvent::testMouseEvent(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags)
{
ui.setupUi(this);
treeWidget = new QTreeWidget(this);
treeWidget->setGeometry(x(),y(),width() - 150,height());
treeWidget->setHeaderHidden(true);
QTreeWidgetItem *item = new QTreeWidgetItem;
item->setText(0,"11");
treeWidget->insertTopLevelItem(0,item);

treeWidget->viewport()->installEventFilter(this);
// treeWidget->window()->installEventFilter(this);
treeWidget->header()->viewport()->installEventFilter(this);
}



蠢笨的愚钝~
离线myseemylife

只看该作者 1楼 发表于: 2011-06-09
附件传不上去,贴部分代码,大家帮忙看下,都快烦死了
蠢笨的愚钝~
离线redheli
只看该作者 2楼 发表于: 2011-06-10
Hi,

似乎filter装反了
离线myseemylife

只看该作者 3楼 发表于: 2011-06-10
回 2楼(redheli) 的帖子
装反了?虾米意思?
蠢笨的愚钝~
离线sy1413

只看该作者 4楼 发表于: 2011-06-10
treeWidget->installEventFilter(this);
hello world!
离线myseemylife

只看该作者 5楼 发表于: 2011-06-10
回 4楼(sy1413) 的帖子
怪我自己太SB了~~~哎1。
if (target == treeWidget->viewport())改成这个样子就好了·~~真悲剧。烦躁了N天~
因为注册时间过滤的时候是
treeWidget->viewport()..
蠢笨的愚钝~
快速回复
限100 字节
 
上一个 下一个