我希望在选择qtreeview的同时按enter键时发生“事件”。因为我不喜欢创建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对象的(共享)指针
当在上面的函数开始处放置断点时,它显示整个事件处理程序甚至都没有被调用--我能做错什么?
发布于 2012-02-14 04:47:38
参见here--QObject::eventFilter不是const,这可以解释您的问题。InputTreeView希望调用一个非常量版本,但该版本并不存在。此外,eventFilter是受保护的,而不是公开的,尽管我认为这并不重要。
https://stackoverflow.com/questions/9267706
复制相似问题