我在QLabel中显示QTableWidget中的项目数,但每当我做一些更新时,我必须手动更新计数(标签)。删除或添加行时是否有任何信号发出?我尝试了cellChanged和itemChanged,但是当我删除一行时它们都没有发出。没有dataChanged信号。
这就是我现在所做的:
ui->tableWidget->insertRow ( ui->tableWidget->rowCount() );
// ....
ui->lblTotalElements->setText(QString::number(ui->tableWidget->rowCount()));
答案 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);
}