在QT 4.7中,我试图在QTableWidget中编辑一个QTableWidgetItem,其余的所有列都只能为我读取。我在这里遇到了问题。
我通过google和stackoverflow检查了一些样本,但未能实现此目的。我尝试过的一些选项是,
我通过调用insertRow(rownumber)来添加行来创建行。
试用1:我在动态插入行时执行以下操作
使用以下代码添加列以禁用编辑
QTableWidgetItem qit("");
qit.setflags(qit.flags() & ~Qt::ItemIsEditable)
qtable.setitem(row,column, &qit);
而对于其他列,我没有设置标志
上述方法不起作用。我可以编辑所有列(甚至是我否定了可编辑选项的那一列)
试用2:
只需使用qtable.setEditTriggers(Qt::NoEditTriggers)
完成上述所有操作,然后根据需要将列设置为可编辑。
但是此选项会使所有列都不可编辑。
但我没有看到有人在任何论坛上抱怨这样的人。所以我一定是犯了一些愚蠢的错误。
有人遇到过这样的问题,如果有,请通过回答帮助。
答案 0 :(得分:9)
添加行中的第一项是可编辑的,第二项是不可编辑的。
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// Prepare layout
QMainWindow *window = new QMainWindow;
QTableWidget *tablewidget = new QTableWidget;
window->setCentralWidget(tablewidget);
// Add data
tablewidget->insertRow(0);
tablewidget->insertColumn(0);
tablewidget->insertColumn(1);
QTableWidgetItem *item;
item = new QTableWidgetItem("editable");
tablewidget->setItem(0,0,item);
item = new QTableWidgetItem("non editable");
item->setFlags(item->flags() & ~Qt::ItemIsEditable); // non editable
tablewidget->setItem(0,1,item);
window->show();
return a.exec();
}