QTableWidget dataChanged SIGNAL

QTableWidget dataChanged SIGNAL

本文关键字:SIGNAL dataChanged QTableWidget      更新时间:2023-10-16

我在QLabel中显示QTableWidget中的项目计数,但是每当我进行一些更新时,我都必须手动更新计数(标签(。删除或添加行时会发出任何信号吗?我尝试了单元格更改和项目更改,但是当我删除一行时它们都没有发出。没有可用的数据已更改信号。

这就是我现在所做的:

ui->tableWidget->insertRow ( ui->tableWidget->rowCount() );
// ....
ui->lblTotalElements->setText(QString::number(ui->tableWidget->rowCount()));

没有信号,但有一个虚拟的、受保护的插槽,你可以使用:rowsAboutToBeRemoved。只需子类,重写该方法,发出自定义信号,然后调用基类的实现。

在删除行时添加信号的实现,存储要删除的行(范围(如下所示:

class MyTableWidget: public QTableWidget
{
Q_OBJECT
public:
using QTableWidget::QTableWidget;
protected slots:
virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override;
signals:
void removed(int, int);
};

void MyTableWidget::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
{
emit removed(start, end);
QTableWidget::rowsAboutToBeRemoved(parent, start, end);
}