1

我希望在选择 qtreeview 时按下回车键时发生“事件”。因为我不想继承 qtreeview(对设计师来说更容易) - 我尝试安装一个事件过滤器。但是,这似乎不起作用:

该类只包含一个公共函数:

bool InputTreeEventHandler::eventFilter(QObject *obj, QEvent *event) const {
    if (event->type() == QEvent::KeyPress) {
        QKeyEvent *keyevent = dynamic_cast<QKeyEvent*>(event);
        QTreeView* tree = dynamic_cast<QTreeView*>(obj);
        if (keyevent->key() == Qt::Key_Enter) {
            //code
        }
    } else {
        return false;
    }

}

并且事件添加如下:

ui.InputTreeView->installEventFilter(InputTreeKeyboardEater.get());

ui.InputTreeView按Enter键时我希望执行的树视图在哪里,以及InputTreeKeyboardEater指向对象的(共享)指针InputTreeEventHandler

在上面的函数开始处放置断点时,它显示整个事件处理程序甚至没有被调用 - 我做错了什么?

4

1 回答 1

4

请参见此处-QObject::eventFilter不是 const,这可以解释您的问题。 InputTreeView正在寻找不存在的非常量版本。eventFilter虽然我认为这并不重要,但也受到保护而不是公开。

于 2012-02-13T20:47:38.293 回答