2017-06-30 3 views
0

Ich zeige die Anzahl der Elemente in QTableWidget in QLabel an, aber wenn ich ein Update mache, muss ich die Zählung manuell aktualisieren (die Bezeichnung). Gibt es ein Signal, das beim Entfernen oder Hinzufügen von Zeilen ausgegeben wird? Ich habe versucht, cellChanged und itemChanged, aber keiner von ihnen emittiert, wenn ich eine Zeile entfernen. Es ist kein dataChanged-Signal verfügbar.QTableWidget dataChanged SIGNAL

Das ist, was ich jetzt tun:

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

Antwort

2

kein Signal vorhanden ist, aber es ist eine virtuelle, Sie geschützt Slot verwenden können: rowsAboutToBeRemoved. Unterschreiben Sie die Methode, überschreiben Sie die Methode, geben Sie ein benutzerdefiniertes Signal aus und rufen Sie dann die Implementierung der Basisklasse auf.

Eine Implementierung ein Signal zu addieren, wenn Zeilen entfernt sind, speichert, die Zeilen im Begriff sind, entfernt werden (ein Bereich) würde wie folgt aussehen:

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); 
} 
Verwandte Themen