csdn一大片都是

ui->tableWidget->item(num,0)->setFlags(Qt::NoItemFlags);

这明显是某行某列,要一增列还要搞个for循环,一个字,挫!

这是解决方案,使用delegate委托,适用于tableview:

http://labisart.com/blog/index.php/Home/Index/article/aid/204

void QTableWidget Item::setFlags( Qt ::ItemFlags flags) Sets the flags for the item to the given flags. These determine whether the item can be selected or modified. See also flags( 设置 Qtablewidget 第一 不可 编辑 ,第二 不可 编辑 。试了很多方式才实现,记录一下,以免忘记 def InsertTableWidget(self,column1,column2): rowcount = self.tablewidget.rowCount() self.tablewidget.insertRow(rowcount) 今天写代码踩坑,发现 QTableWidget Item中 设置 item的属性的setflags如果 设置 Qt ::`ItemIsEnabled,必须 设置 Qt ::ItemIsEnabled| Qt ::ItemIsEnabled才可以 编辑 。 在网上找了半天,都是说 qtableview 设置 某一 不可 编辑 的。我TMD,而且还是使用委托,委托有一个问题就是,当你的行数很多,几万甚至上百万。那么你的界面就会卡死。 后来翻墙上国外网站,找到了这个方法, 注意,这里使用过的是自定义model,然后将这个方法放在自定义model的头文件中 Qt ::ItemFlags flags(const QModelIndex& index) const { if (index.column() < 3) return Qt ::ItemIsEnab 之前工作中,需要将 QTableView 的某一 或者某一行 设置 不可 编辑 状态。看其他的博主大多是使用for循环,或者自定义委托。因为我的表格有很多 和行,不太适合for循环, 设置 自定义委托感觉不错,但是又不想额外添加代码的复杂度。后来发现一个很简单的方法可以实现 不可 编辑 QTableWidget Item *item0= new QTableWidget Item(tr("%1").arg(devTopoInfo->id)); item0->setFla... 2、 设置 某行或者 某列 不可 编辑 ,其他行 编辑 1)继承类QStyledItemDelegate,重写函数createEditor,让其返回空,(单元格较多时推荐使用) QWidget* ReadOnlyItemDelegate::createEditor(QWidget* parent, const QStyleOpti 一、常规流程 Qt 中表格控件,常用的有 QTableView QTableWidget ,为什么选择使用 QTableView 呢?因为 QTableView 支持MVC模式(模型-视图框架)。 QTableView * m_pTable = new QTableView ; QStandardModel* m_pTable_Model = new QStandardModel; m_pTable->setModel(m_pTable_Model); 二、功能记录 1、 设置 表头 QStringList qstrL 1.显示格子 table->setShowGrid(false); 2.由内容调整 table->resizeColumnsToContents(); 3.获取垂直表头 table->verticalHeader();     //准备数据模型     QStandardItemModel *student_model = new QStandardItemModel();     student_model->setHorizontalHeaderItem(0, new QStandardItem(QObj