我有以下代码,用两个单元格创建一个表:
QTableWidget table(2, 1);
QObject::connect(&table, &QTableWidget::cellChanged, [](int column, int row) {
qDebug() << column << row;
});
auto item = new QTableWidgetItem();
item->setData(Qt::DisplayRole, 42);
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren);
table.setItem(1, 0, item);
我希望cellChanged
信号在任何一个单元改变时都会发出,但事实并非如此:它仅适用于第一个单元,不适用于第二个单元。
为什么没有cellChanged
的单元格发出QTableWidgetItem
信号?
答案 0 :(得分:0)
请勿设置Qt::ItemNeverHasChildren
标志。由于某些原因,即使您的商品实际上没有子商品,也会与相关的信号混淆。以下代码按预期工作:
QTableWidget table(2, 1);
QObject::connect(&table, &QTableWidget::cellChanged, [](int column, int row) {
qDebug() << column << row;
});
auto item = new QTableWidgetItem();
item->setData(Qt::DisplayRole, 42);
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled);
table.setItem(1, 0, item);