我打开编辑QTableWidget的一些列
QObject::connect(ui->tableWidgetAdminEmployee, &QTableWidget::clicked,
ui->tableWidgetAdminEmployee, [=](const QModelIndex& index) {
if(index.column()!=0&&index.column()!=7&&index.column()!=8&&index.column()!=9)
if (ui->tableWidgetAdminEmployee->item(index.row(), index.column())->flags() & Qt::ItemIsEnabled )
ui->tableWidgetAdminEmployee->edit(index);
});
但如果我选择可编辑的单元格,然后开始编辑它,并按Tab键下一个单元格将被选中,并成为可编辑的,即使它不应该
我关闭了QTableWidget中的tabKeyNavigation,但仍然可以通过tab选择不可编辑的单元格
我试过了,但是没用
QObject::connect(ui->tableWidgetAdminEmployee, &QTableWidget::clicked,
ui->tableWidgetAdminEmployee, [=](const QModelIndex& index) {
if(index.column()!=0&&index.column()!=7&&index.column()!=8&&index.column()!=9)
{
if (ui->tableWidgetAdminEmployee->item(index.row(), index.column())->flags() & Qt::ItemIsEnabled )
ui->tableWidgetAdminEmployee->edit(index);
}
else
ui->tableWidgetAdminEmployee->item(index.row(), index.column())->setFlags(Qt::ItemIsEnabled);
});
2条答案
按热度按时间jogvjijk1#
看起来你想自己处理编辑。这可能是一个有效的方法。
但是,你需要禁用Qt的默认编辑功能,对于你的情况,我想关闭所有编辑触发器是最简单的方法(cf edit triggers)
因此,Qt不会自己开始编辑,您可以完全控制。
vojdkbi02#
已解决