我将 QTableWidget 子类化以添加一些功能。我也用过这个myQTableWidgetSubclass->setRowCount(10);
方法。
问题是表格不可编辑。目标是允许用户逐行编辑,例如,首先是第一行,当它准备好时(即用户填写必要的数据),然后是第二行,等等。
我需要与“MS 访问表”类似的功能
我将 QTableWidget 子类化以添加一些功能。我也用过这个myQTableWidgetSubclass->setRowCount(10);
方法。
问题是表格不可编辑。目标是允许用户逐行编辑,例如,首先是第一行,当它准备好时(即用户填写必要的数据),然后是第二行,等等。
我需要与“MS 访问表”类似的功能
从理论上讲,这很简单,但是人们不会从头开始为您编写代码。
1)您将需要使用void QTableWidgetItem::setFlags(Qt::ItemFlags flags)
使项目可编辑和不可编辑。您可以根据需要对每个项目使用此方法。
请参阅以下文档中的枚举值描述Qt::ItemFlags
:
Qt::ItemIsEditable 2 可以编辑。
2) 完成后,您需要将自定义插槽连接到刚刚编辑的项目的相应信号。然后,您的插槽将分别重新排列单元格的可编辑功能。
以下是您可能感兴趣的相关信号:
* void QTableWidget::cellChanged(int row, int column) [signal]
* void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) [signal]
* void QTableWidget::currentItemChanged(QTableWidgetItem * current, QTableWidgetItem * previous) [signal]
* void QTableWidget::itemChanged(QTableWidgetItem * item) [signal]
然后,您将需要这样的东西:
connect(myQTableWidgetSubclass, SIGNAL(selectedSignalFromAbove), this, SLOT(mySlotInTheClass));
// ...
void MyClass::mySlotInTheClass(...)
{
// ...
myTableWidgetItemX.setFlags(...);
// ...
}