0

我想让用户可以编辑 QTableWidget 的项目。以下代码在单独的项目中编译时可以完美运行:

QTableWidget *tablewidget = new QTableWidget;

// Add data
tablewidget->insertRow(0);
tablewidget->insertColumn(0);
tablewidget->insertColumn(1);

QTableWidgetItem *item;
item = new QTableWidgetItem("editable");
tablewidget->setItem(0,0,item);

我可以双击单元格,它就可以接收密钥了。

但是当我将此代码作为我现有项目的一部分时(正是此代码,没有区别,也没有与现有代码的连接),双击单元格不会导致任何事情- 单元格不可编辑!

这个项目非常大,完整的代码审查将花费大量时间。

我的第一个假设 - 也许 Qt 允许为 QTableWidget/QTableWidgetItem 的所有实例全局设置不可编辑状态?还是在全球范围内注册代表?

你认为根本原因是什么?

4

1 回答 1

0

默认情况下QTableWidget是可编辑的,并DoubleClick作为编辑触发器。

但是您已经存在的项目可能已经更改了这些属性。您可以将它们更改为默认值。首先尝试为整个表设置编辑触发器:

tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked);

如果它不能解决您的问题,请尝试更改每个项目的可编辑属性:

item->setFlags(item.Flags() | Qt::ItemIsEditable);
于 2014-02-19T11:52:00.487 回答