使QTableWidget可逐行编辑,就像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(...);
    // ...
}

相关内容

最新更新