是否有任何优化的方法可以在Qtablewidget中编辑特定的单元格,使其离开剩余的单元格只读

问题描述:

寻找一种最佳的方式来让整个表格只能通过留下少量可编辑的单元格来读取。是否有任何优化的方法可以在Qtablewidget中编辑特定的单元格,使其离开剩余的单元格只读

我试过的是给除了需要编辑的单个单元格分配不可编辑的标志。

ui.budget_tab7->item(3,3)->setFlags(ui.budget_tab7->item(3,3)->flags() & Qt::ItemIsEditable | Qt::ItemIsSelectable); 

那么这不是最好的方式来做到这一点。

是否有可能做这样的

ui.budget_tab7->setEditTriggers(QAbstractItemView::NoEditTriggers); 

,然后应用某种对少数细胞的方法,以使细胞可编辑首先要对整个表不可编辑?

+0

很难判断它是否是最好的方法,但是您可以实现自己的'QAbstractItemModel',实现'flags'方法并返回每个applicalbe单元的可编辑对象。编辑触发器是一个不同的概念,然后可编辑,不能混合。 – maxik

这真的取决于你想在这里实现什么。一种选择是在表格中使用QStandardModel。这样你就可以喂食QStandardItems,这很容易配置(请检查这个班级的所有设置者,看看它的真正威力)。

QTableWidget* view = new QTableWidget; 
QStandardItemModel* model = new QStandardItemModel; 
view->setModel(model); 
... 
QStandardItem* new_item = new QStanrdItem("A"); 
new_item->setEditable(false); 

model->setItem(0,0,new_item); 

但是,它确实取决于你的表正在显示什么,以及你希望如何存储/访问你的数据。实现自己的QAbstractItemModel通常是获得所需功能的最佳方式。