In meinem Programm habe ich eine Reihe von Registerkarten und gewann jede Registerkarte gibt es ein Kombinationsfeld und QListWidget
. Ich versuche, den Status der Elemente auf der QListWidget
durch einen Zeiger des Typs QListWidgetItem
zu lesen. Das Programm stürzt an diesem Punkt des Codes ab. Ich bin sicher, dass das Programm hier abstürzt, da ich es mit Haltepunkten überprüft habe.QListWidgetItem Zeiger verursacht Programm zum Absturz
Dies ist mein Code;
void MainWindow::on_applyButton_clicked()
{
//Reset list
MainWindow::revenueList.clear();
QStringList itemList;
itemList <<"Revenue growth" << "Cost of revenue growth" << "Operating income growth"
<< "Net income growth" << "Total operating expense growth" << "Gross profit"
<< "Operating profit" << "Net profit";
//Processing income statement
//Loop through all itemsin ComboBox
int items = ui->inc_st_comb->count();
for(int currentItem = 0; currentItem < items; currentItem++)
{
//Set to current index
ui->inc_st_comb->setCurrentText(itemList.at(currentItem));
//Point to QListWidget Item and read checkbox
QListWidgetItem *listItem = ui->inc_st_list->item(currentItem);
if(listItem->checkState() == Qt::Checked)
{
MainWindow::revenueList.append(true);
}
else if (listItem->checkState() == Qt::Unchecked)
{
MainWindow::revenueList.append(false);
}
}
qDebug() << "U: " << MainWindow::revenueList;
}
Das Programm stürzt bei diesem Block ab;
if(listItem->checkState() == Qt::Checked)
{
MainWindow::revenueList.append(true);
}
else if (listItem->checkState() == Qt::Unchecked)
{
MainWindow::revenueList.append(false);
}
Dies ist wahrscheinlich, weil der Zeiger listItem
verweist auf einen ungültigen Ort oder NULL
. Wie gehe ich bei diesem Problem vor? Codiere ich etwas falsch?
"Dies liegt wahrscheinlich daran, dass der Zeiger listItem auf eine ungültige Position oder NULL zeigt." Wahrscheinlich? Warum verifizieren Sie dies nicht in Ihrem Debugger, bevor Sie auf SO veröffentlichen? Finden Sie das _exact_ Problem zuerst heraus. – MrEricSir
Kannst du mir erklären, wie man das im Debugger macht? Ich bin neu in Qt Programmierung. Ich selbst lernen. Jeder Rat wäre hilfreich? – Vino
Ihr Code ist unvollständig. insbesondere scheint es eine 'main()' Funktion und mindestens ein '# include' zu fehlen. Bitte [bearbeiten] Sie Ihren Code, so dass es ein [mcve] Ihres Problems ist, dann können wir versuchen, es zu reproduzieren und zu lösen. Sie sollten auch [fragen] lesen. –