QTableWidget
[〜#〜] not [〜#〜]に1つの列が必要です。
フォーラムでは、いくつかのflags
について多くのことを読みましたが、実装することができませんでした。
次の種類のアイテムをQTableWidgetに挿入します。
QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
正常に動作します!
編集:
QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
これはより良い解決策です。 @priomsrbに感謝します。
XORを使用した結果は、現在の状態が何であるかによって異なります。
item->setFlags(item->flags() & ~Qt::ItemIsEditable);
現在の設定に関係なく、編集がオフになっていることを確認します。
私はより良い提案に来ました。cellDoubleClicked信号を新しいSLOTで上書きするだけです。これは、どのセルも変更したくない場合です
@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();
}
}
}