一直不懂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);
}