gpt4 book ai didi

c++ - qtreeview 的 qt eventfilter 不工作?

转载 作者:行者123 更新时间:2023-11-30 02:05:55 26 4
gpt4 key购买 nike

我希望在选择 qtreeview 时按下回车键时发生“事件”。因为我不喜欢将 qtreeview 子类化(对设计者来说更容易)——我尝试安装一个事件过滤器。然而,这似乎没有用:

该类仅包含一个公共(public)函数:

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 时执行的 TreeView ,而 InputTreeKeyboardEater 是指向 InputTreeEventHandler 对象的(共享)指针>

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

最佳答案

参见 here --QObject::eventFilter 不是常量,这可以解释您的问题。 InputTreeView 正在寻求调用不存在的非常量版本。此外,eventFilter 是 protected 而不是公开的,但我认为这并不重要。

关于c++ - qtreeview 的 qt eventfilter 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9267706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com