gpt4 book ai didi

c++ - 使 QTableWidget 可以像使用 MS 访问一样逐行编辑

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:55 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

1) 您将需要使用 void QTableWidgetItem::setFlags(Qt::ItemFlags flags) 使项目可编辑和不可编辑。您可以根据需要对每个项目使用此方法。

请参阅Qt::ItemFlags 文档中的以下枚举值说明:

Qt::ItemIsEditable 2 It can be edited.

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(...);
// ...
}

关于c++ - 使 QTableWidget 可以像使用 MS 访问一样逐行编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19035569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com