Filtrare i risultati di una QTableWidget con una QLineEdit
In pratica, abbiamo una QTableWidget piena di righe, e vogliamo cercare al suo interno scrivendo in una QLineEdit.
Non è molto difficile ottenere questo risultato!
Prima di tutto aggiungiamo un SLOT nel file di intestazione del nostro QWidget:
private slots:
void txtSearch(QString search);
Questa la sua implementazione:
void Articoli::txtSearch(QString search) {
QString filter = search.toUpper();
for (int i = 0; i < ui->tblArticoli->rowCount(); ++i) {
bool match = false;
for (int j = 0; j < ui->tblArticoli->columnCount(); ++j){
QTableWidgetItem *item = ui->tblArticoli->item(i, j);
if (item->text().contains(filter)) {
match = true;
break;
}
}
ui->tblArticoli->setRowHidden(i, !match);
}
}
Iteriamo su tutte le righe della QTableWidget, e facciamo il match con quanto scriviamo nella casella di testo.
A questo punto ci basta collegare la QLineEdit al metodo; quindi nel costruttore del nostro QWidget:
connect(ui->txtSearch, SIGNAL(textChanged(const QString &)), this, SLOT(txtSearch(const QString &)));
Tutto qua.
Enjoy!
c++ qt qtablewidget qlineedit qwdget connect slot
Commentami!