Reputation: 638
| Name | Math | Physics | Average grade |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
the column "math" and "physics" is for user to put number in, the column "average" CAN NOT be put value, it is only for showing average value after user put "math" and "physics" grade. How can i disable editing but still show calculated value in column "average" ?
I want to write content to several rows, but my code does not work
ui->tableWidget->setColumnCount(4);
ui->tableWidget->setRowCount(8);
ui->tableWidget->setSortingEnabled(false);
QTableWidgetItem *newItem = new QTableWidgetItem(tr("Hello World"));
for (int i=0; i< ui->tableWidget->rowCount(); i++)
ui->tableWidget->setItem(i, 0, newItem);
There is a message like this
QTableWidget: cannot insert an item that is already owned by another QTableWidget
I still don't understand because i am a newbie with QT. Please help me, many thanks ! :)
Code updated:
for (int i = 0; i < ui.tableWidget->rowCount(); i++) {
QTableWidgetItem *icon_item = new QTableWidgetItem;
QIcon icon(":/myproject/icon/test.png");
icon_item->setIcon(icon);
ui.tableWidget->setItem(i, 0, icon_item);
}
for (int j = 0; j < ui.tableWidget->rowCount(); j++) {
ui.tableWidget->item(j, 3)->setFlags(ui.tableWidget->item(j, 3)->flags() & ~Qt::ItemIsEditable);
}
Upvotes: 2
Views: 11644
Reputation: 5836
You can use QTableWidgetItem::setFlags()
. To keep the other default flags, but remove Qt::ItemIsEditable
:
item->setFlags(item->flags() & ~Qt::ItemIsEditable);
You cannot set the same QTableWidgetItem
instance to multiple cells. To get you started:
for (...) {
QTableWidgetItem *item = new QTableWidgetItem(...);
tableWidget->setItem(...);
}
Upvotes: 6