QTableWidget pobranie tekstu - problem



  • 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:

    1. 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;
    }
    
    1. 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;
    }
    

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.