在qtableView中编辑单元格之后,如何避免使用选项卡键进行编辑模式
How to avoid edit mode when I advance with TAB key after edit a cell in a QTableView?
这是我的问题。当我在qtableView中编辑单元格时,如果我按下选项卡键,我会希望这样做,但是当前单元格会更新,但是下一个单元格不在编辑模式中。
我尝试在表中创建一个EventFilter,但它行不通。如果我在代表的编辑小部件中创建EventFilter。这是我在qtableView中尝试的事件滤光器的尝试。我的想法是,如果当前单元格在最后一列和行中,并且当前行不是空,则我插入另一行(这可以正常工作),如果我在编辑任何单元格,当我按下标签时,我可以将单元格,但没有编辑模式
这是代码的片段:
bool MiTabla::eventFilter(QObject *watched, QEvent *e)
{
if (e->type() == QEvent::KeyPress)
{
QModelIndex indice = this->currentIndex();
QKeyEvent *ke =static_cast<QKeyEvent*>(e);
switch (ke->key())
{
case (Qt::Key_Delete):
{
if (this->selectionModel()->isRowSelected(indice.row(),QModelIndex()))
{
//borrarLineas();
}
else
{
this->model()->setData(this->currentIndex(),"",Qt::EditRole);
}
break;
}
case (Qt::Key_Tab):
{
if (indice.row() == this->model()->rowCount(QModelIndex())-1
&& indice.column() == this->model()->columnCount(QModelIndex())-1
&& !NombreVacio())
{
this->model()->insertRow(this->model()->rowCount(QModelIndex()));
QModelIndex ind = this->model()->index(indice.row()+1,0);
this->setCurrentIndex(ind);
}
else //this doesn't work
{
QModelIndex ind = this->model()->index(indice.row(),indice.column()+1);
this->setCurrentIndex(ind);
}
break;
谢谢。我已经解决了它。我在委托类中的 eventfilter()函数(从qStyledItemdelegate取下)如下:
bool DelegadoNombre::eventFilter(QObject *obj, QEvent* event)
{
if (event->type()==QEvent::KeyPress)
{
QKeyEvent* key = static_cast<QKeyEvent*>(event);
if (key->key()==Qt::Key_Tab || key->key()==Qt::Key_Enter || key->key()==Qt::Key_Return)
{
QLineEdit *editor=qobject_cast<QLineEdit*>(obj);
emit commitData(editor);
emit closeEditor(editor, QStyledItemDelegate::NoHint);
}
else
{
return QObject::eventFilter(obj, event);
}
return false;
}
else
{
return QObject::eventFilter(obj, event);
}
return false;
}
此功能向代表的编辑说,如果按下选项卡键,则必须提交数据并关闭编辑器,但在编辑模式下 qStyledIteMdelegate :: nohint noth no nowe oper oper the NEXT编辑器。另外,返回false以允许到表使用此事件
相关文章:
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- 编辑文件中的文本
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- 如何传递多个 std::文件系统选项?
- 基于编译器选项的编译二进制路径
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- SetDlgItemInt 不会更改嵌入资源的编辑框
- 如何应用 libcurl 的持久连接选项
- 文件中.dat Dlib 选项
- 在qtableView中编辑单元格之后,如何避免使用选项卡键进行编辑模式
- 在QTableView中用作编辑器的QComboBox中刷新选项
- QTCreator如何在使用行编辑时启用密码填充选项
- XML编辑/替换的好选项