Get sum of all values in one column in QTableView
Unsolved
General and Desktop
-
@Wieland then how to change that for qtableVIEW? Please help
void MainWindow::averageItems() { QList<QTableWidgetItem *> selected = tableWidget->selectedItems(); QTableWidgetItem *item; int number = 0; double total = 0; foreach (item, selected) { bool ok; double value = item->text().toDouble(&ok); if (ok && !item->text().isEmpty()) { total += value; number++; } } if (number > 0) tableWidget->currentItem()->setText(QString::number(total/number)); } void MainWindow::sumItems() { QList<QTableWidgetItem *> selected = tableWidget->selectedItems(); QTableWidgetItem *item; int number = 0; double total = 0; foreach (item, selected) { bool ok; double value = item->text().toDouble(&ok); if (ok && !item->text().isEmpty()) { total += value; number++; } } if (number > 0) tableWidget->currentItem()->setText(QString::number(total)); }
-
Assuming you're using a QStandardItemModel:
int result = 0; const int column = 1; // second column for (int row = 0; row < m_model.rowCount(); ++row) { result += m_model.item(row, column)->text().toInt(); } ui->label->setText( QString::number(result) ); // show sum in label
-
@Wieland 'm_model' was not declared in this scope. If i chane m_model to model it shows "request for member 'rowCount' in 'model', which is of pointer type 'QSqlQueryModel*' (maybe you meant to use '->' ?)"
My code is
QSqlQueryModel * model = new QSqlQueryModel(); model->setQuery("SELECT ......"); ui->tableView->setModel(model); int result = 0; const int column = 1; // second column for (int row = 0; row < m_model.rowCount(); ++row) { result += m_model.item(row, column)->text().toInt(); } ui->label_3->setText( QString::number(result) );
so it doesn't work
-
Ok, given you have
model
which is a pointer to aQSqlQueryModel
, then this should work:int result = 0; const int column = 1; for (int row = 0; row < model->rowCount(); ++row) { result += model->data(model->index(row, column)).toInt(); } ui->label->setText( QString::number(result) ); // show sum in label