如何在QTableWidget中只读列?

我想在QTableWidget有一列不可编辑。
在论坛上,我读了很多关于一些flags但无法执行。

提前致谢!

插入QTableWidget以下types的项目:

 QTableWidgetItem *item = new QTableWidgetItem(); item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled); 

工作正常!

编辑:

 QTableWidgetItem *item = new QTableWidgetItem(); item->setFlags(item->flags() ^ Qt::ItemIsEditable); 

这是一个更好的解决scheme。 感谢@priomsrb。

使用XOR的结果取决于当前状态。 我build议使用

 item->setFlags(item->flags() & ~Qt::ItemIsEditable); 

以确保无论当前设置如何,都可以closures编辑。

要将@ Narek的代码应用到行或列,只需使用一个简单的for循环,并将条件包含在不希望可编辑的行/列中。

以下代码将一个csv文件读入QTableWidget:

 if(!rowOfData.isEmpty()){ for (int x = 0; x < rowOfData.size(); x++) { rowData = rowOfData.at(x).split(","); if(ui->table_Data->rowCount() <= x) ui->table_Data->insertRow(x); for (int y = 0; y < rowData.size(); y++) { QTableWidgetItem *item = new QTableWidgetItem(rowData[y],QTableWidgetItem::Type); if( y < 3 ) item->setFlags(item->flags() ^ Qt::ItemIsEditable); // Only disables the first three columns for editing, but allows the rest of the columns to be edited ui->table_Data->setItem(x,y,item); ui->table_Data->repaint(); } } } 

我来了一个更好的build议,只是用一个新的SLOT覆盖cellDoubleClicked信号。 这是,如果你不想修改任何单元格