2

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

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

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

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

我想将Enter/Esc信号连接onTreeItemChangeditemChanged.

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

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

任何想法,

塞布

4

1 回答 1

0

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

关于从 QCombobox 派生的类,我有一些(可能)类似的问题,它有一些特殊的行为,何时显示弹出窗口以及何时不显示。

每次按下 Return 时都会发生一些事情,但它没有发送 QEventKeyEvent,解决方案是捕获QEvent::Shortcut,因为元素将此键解释为接受的快捷方式。

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

于 2015-03-07T09:17:14.823 回答