QTreeWidgetItem更改-检测输入/ESC

QTreeWidgetItem Change - Detect Enter/ESC

本文关键字:ESC 输入 检测 更改 QTreeWidgetItem      更新时间:2023-10-16

我正在开发一个带有QTreeWidgetItem的Qt/C++应用程序。当创建一个新项目时,我将其设置为setEditable,它允许我直接在UI中填写新名称。

我目前正在使用itemChanged来捕获更改并保存它。默认情况下,我将新项目名称设置为新文件夹,之后我可以手动更改它。我的问题是,当我创建项目时,它将变为可编辑的,如果我按EnterEsc

有没有一个基于SIGNAL/SLOT的命令可以使用,它可以捕捉Enter/Esc事件。目标是触发相同的信号

connect(this, SIGNAL(itemChanged(QTreeWidgetItem*, int)),
        this, SLOT(onTreeItemChanged(QTreeWidgetItem*)));

我想将Enter/Esc信号连接到onTreeItemChanged,就像对itemChanged所做的那样。

我尝试过使用itemActivated,但即使按下Enter,它也不会被触发。

connect(this, SIGNAL(itemActivated(QTreeWidgetItem*, int)),
        this, SLOT(onTreeItemChanged(QTreeWidgetItem*)));

有什么想法吗,

Seb

很抱歉写下这个答案,但我仍然无法评论:

我遇到了一些(可能)类似的问题,涉及一个从QCombobox派生的类,它有一些特殊的行为,什么时候显示弹出窗口,什么时候不显示。

每次按下Return键时,都会发生这种情况,但它不是QEventKeyEvent,解决方案是捕获QEvent::Shortcut,因为元素将此键解释为accept的快捷键。

--编辑--在这种情况下,我经常安装一个事件过滤器,让它只将事件写入输出,使用switch语句过滤掉不感兴趣的元素,直到找到罪魁祸首。