1

我将 QTableWidget 子类化以添加一些功能。我也用过这个myQTableWidgetSubclass->setRowCount(10);方法。

问题是表格不可编辑。目标是允许用户逐行编辑,例如,首先是第一行,当它准备好时(即用户填写必要的数据),然后是第二行,等等。

我需要与“MS 访问表”类似的功能

4

1 回答 1

2

从理论上讲,这很简单,但是人们不会从头开始为您编写代码。

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(...);
    // ...
}
于 2013-09-26T19:01:44.017 回答