本文部分转自:http://blog.csdn.net/sinat_27593959/article/details/53048614?locationNum=3&fps=1
方法一:
通过QTableWidget中的item( )方法可以获得相应行数和列数的QTableWidgetItem,若要设置该Item的编辑状态(即可编辑状态和不可编辑状态),可以通过QTableWidgetItem下的setflags函数来设置。setflags函数需要传入的参数为枚举型的Qt::ItemFlags,该枚举类型描述如下:
enumItemFlag{
NoItemFlags=0,
ItemIsSelectable=1,
ItemIsEditable=2,
ItemIsDragEnabled=4,
ItemIsDropEnabled=8,
ItemIsUserCheckable=16,
ItemIsEnabled=32,
ItemIsTristate=64,
ItemNeverHasChildren=128,
ItemIsUserTristate=256
};
通过需要表格框状态可分为如下三种:灰色不可编辑状态、浅色不可编辑状态和浅色可双击编辑状态,而setflags的参数传入可以通过强制类型转换的方式。即对应于如下:
灰色不可编辑状态:Item.setflags((ItemFlags) 0);
浅色不可编辑状态:Item.setflags((ItemFlags) 32);
浅色可双击编辑状态:Item.setflags((ItemFlags) 63);
(注意:此处为63,不是64。虽然枚举类型中没有对应于63的值,但是63是QTableWidget实体创建的时候给每个Item的初始化flags值。设置成它就是可编辑状态!)
方法二:
this->item = ui->ControlTableWidget->item(i, 4);
// 设置单元格不可编辑
this->item->setFlags(this->item->flags() & (~Qt::ItemIsEditable));
// 设置单元格不可选择
this->item->setFlags(this->item->flags() & (~Qt::ItemIsSelectable));
上述是设置ControlTableWidget表格中第四列不可编辑和不可选择