本文主要是介绍QTableWidget编辑单元格内容,按下回车键使焦点转到下一个单元格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编辑QTableWidget单元格内容按回车键后,使焦点从当前单元格转到下一个单元格。
先上效果:
方法:
为了在按Enter键时使焦点从表中的一个单元格转到下一个单元格,可以重新实现代理的eventFilter(),
并监听键盘事件:QEvent::KeyPress
代码实现:
class MyItemDelegate : public QStyledItemDelegate
{Q_OBJECT
public:MyItemDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent){// 添加事件过滤器installEventFilter(this);}bool eventFilter (QObject *editor, QEvent *event){// 监听键盘事件if (event->type() == QEvent::KeyPress){QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);// 按下回车键if (keyEvent->key() == Qt::Key_Return){qDebug() << "Ate key press" << keyEvent->key();// 提交当前项的数据emit commitData((QWidget*)editor);// 关闭编辑器并指向下一项closeEditor((QWidget*)editor, QAbstractItemDelegate::EditNextItem); return true;}}return QStyledItemDelegate::eventFilter(editor, event);}
};class TableWidget : public QTableWidget
{Q_OBJECT
public:TableWidget(){// 设置代理setItemDelegate(new MyItemDelegate());// 设置行列数setColumnCount(5);setRowCount(5);}
};
调用:
int main(int argc, char *argv[])
{QApplication a(argc, argv);TableWidget box;box.show();return a.exec();
}
void QAbstractItemView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint) [virtual protected slot]
关闭给定的编辑器,然后将其释放。参数hint用于指定在编辑操作结束之后,视图应如何响应。
例如,hint可能指示应打开视图中的下一项进行编辑。void QAbstractItemView::commitData(QWidget *editor)
提交编辑器中的内容给model。
qt官方API
枚举类型:enum QAbstractItemDelegate::EndEditHint
这篇关于QTableWidget编辑单元格内容,按下回车键使焦点转到下一个单元格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!