1.设置表格控件只读:
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);2.设置表格单元格条目只读:
QTableWidgetItem *item = ui->tableWidget->item(row,0); item->setFlags(Qt::NoItemFlags);3.设置表格控件可写
ui->tableWidget->setEditTriggers(QAbstractItemView::CurrentChanged);4.但是我用 item->setFlags(Qt::ItemIsEditable) 设置单元格条目可写就失败了
5.经过一番斗争得到如下设置表格控件单行可写的函数: 大概思路:先将整个控件设为可写,再将特定行之外的行数设置为不可写
void setWriteability(int row, bool bl)//row为想要设置可写性的表格行数下标,bl为设置为可写还是只读,true为单行可写,false为整张表只读 { if(bl) { ui->tableWidget->setEditTriggers(QAbstractItemView::CurrentChanged);//所有可写 //非选中行均设置为不可写 QTableWidgetItem *item;//存放每一个单元格条目 int i = 0; for(; i < row; i++)//先将指定行之前的行数设为只读 { for(int j=0; j<7; j++) { item = ui->tableWidget->item(i,j); item->setFlags(Qt::NoItemFlags); } } i++;//跳过指定的可写行 for(; i >row && i < ui->tableWidget->rowCount(); i++)//再将指定行之后的行数设为只读 { for(int j=0; j<7; j++) { item = ui->tableWidget->item(i,j); item->setFlags(Qt::NoItemFlags); } } }else{ ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//只读 } }记录一下,如果各位大神有更好的方法,恳请留言,先谢过~~~