gpt4 book ai didi

c++ - 编辑 QTableWidgetItem 时捕获 ESC 键

转载 作者:行者123 更新时间:2023-11-28 04:47:03 28 4
gpt4 key购买 nike

如果用户编辑了一个 QTableWidgetItem 并通过按 ESC 中止它,我如何捕捉?我通过捕获 QTableWidget::cellDoubleClicked 来处理相应项目的内容,并且我通过监听 QTableWidget::cellChanged 知道什么时候发生了更改。但是当用户按下 ESC 时,我不知道。

我试图在 QTableWidget 上安装一个事件过滤器,但它只捕获小部件本身接收到的按键——编辑器似乎是另一回事。

如有任何帮助,我们将不胜感激!

最佳答案

您必须使用委托(delegate)并使用您的 eventFilter ,以下代码为例:

#include <QApplication>
#include <QKeyEvent>
#include <QStyledItemDelegate>
#include <QTableWidget>

#include <QDebug>

class TableWidgetDelegate: public QStyledItemDelegate{
public:
using QStyledItemDelegate::QStyledItemDelegate;
protected:
bool eventFilter(QObject * object, QEvent * event){
QWidget *editor = qobject_cast<QWidget*>(object);
if(editor && event->type() == QEvent::KeyPress) {
if(static_cast<QKeyEvent *>(event)->key() == Qt::Key_Escape){
qDebug()<<"escape";
}
}
return QStyledItemDelegate::eventFilter(editor, event);
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTableWidget w(6, 4);
w.setItemDelegate(new TableWidgetDelegate);
w.show();

return a.exec();
}

关于c++ - 编辑 QTableWidgetItem 时捕获 ESC 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49084276/

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