例程 : 又是好風景 : http://blog.csdn.net/qiao_yihan/article/details/46413345
關鍵點:
1.QTableWidgetItem 的 setFlags() 和 flags()
2.QTableWidget 不能 設置 setEditTriggers() 為 QAbstractItemView::NoEditTriggers,否則1中的設置會失效
table_widget->setEditTriggers(QAbstractItemView::NoEditTriggers); //設置不可編輯
代碼:

int NumOfReg = 5; ui->tableWidget->setColumnCount(11); ui->tableWidget->setRowCount(NumOfReg); /* 設置 tableWidget */ ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "Id" << "Name" << "Unit" << "Value" << "Min" << "Max" \ << "Type" << "Mode" << "Enable" << "Last read" << "Last write"); ui->tableWidget->verticalHeader()->setVisible(false); // 隱藏水平header ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems); // 單個選中 ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); // 可以選中多個 /* 設置 Id Name 字段的值不能修改 */ /* 設置不可修改的Id Name兩列的背景顏色為灰色 */ for(int i = 0; i < NumOfReg; i++) { QTableWidgetItem *item = new QTableWidgetItem(); //item->setBackground(QBrush(QColor(Qt::lightGray))); item->setFlags(item->flags() & (~Qt::ItemIsEditable)); ui->tableWidget->setItem(i, 0, item); } for(int i = 0; i < NumOfReg; i++) { QTableWidgetItem *item = new QTableWidgetItem(); item->setBackground(QBrush(QColor(Qt::lightGray))); item->setFlags(item->flags() & (~Qt::ItemIsEditable)); ui->tableWidget->setItem(i, 1, item); }
工程文件:
http://download.csdn.net/detail/ewrest/9854319