QTableWidget pobranie tekstu - problem
Unsolved
Polish
-
Witam ostatnio zabrałem się za naukę Qt i na tapecie mam TableWIdget. No i jest problem chcę pobrać zawartość komórki. I jeżeli komórka jest pusta lub nie zaznaczona aplikacja się wysypuje. Oto kod obsługi przycisku:
void MainWindow::on_PDodaj_clicked() { QString content; int row,col; row = ui->tableWidget->selectedItems().first()->row(); col = ui->tableWidget->selectedItems().first()->column(); if(ui->tableWidget->item(row,col)) content = ui->tableWidget->item(row,col)->text(); else content = "0"; ui->label->setText(content); }
Czy ktoś jest w stanie pomóc?
-
W kodzie mogą wystąpić dwa problemy:
- QTableWidget::selectedItems() zwraca QList<QTableWidgetItem *>, a Ty w kodzie zakładasz zawsze, że QList nie jest pusta i wykonujesz metodę QList::first(), dlatego uważam, że powinieneś zrobić coś takiego:
QList<QTableWidgetItem *> items = ui->tableWidget->selectedItems(); if (items.isEmpty()) { return; }
- Nie sprawdzasz czy wskaźnik znajdujący się QList<QTableWidgetItem*> nie jest nullptr np.
// items z kodu wyżej auto ptr = items.first(); if (!ptr) { return; }