QTableWidget dataChanged SIGNAL

时间:2017-06-30 22:46:48

标签: c++ qt

我在QLabel中显示QTableWidget中的项目数,但每当我做一些更新时,我必须手动更新计数(标签)。删除或添加行时是否有任何信号发出?我尝试了cellChanged和itemChanged,但是当我删除一行时它们都没有发出。没有dataChanged信号。

这就是我现在所做的:

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

1 个答案:

答案 0 :(得分:2)

没有信号,但您可以使用虚拟的受保护插槽: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);
}