我已经将QTableWidget子类化以添加一些功能。我也使用了myQTableWidgetSubclass->setRowCount(10);
方法。
问题是该表格不可编辑。目标是允许用户逐行编辑,例如首先是第一行,当它准备就绪时(即用户填写必要的数据),然后第二行等等。
我需要与“MS access table”类似的功能
答案 0 :(得分:1)
从理论上讲,这很简单,但人们不会从头开始为你编写代码。
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(...);
// ...
}