Указатель QListWidgetItem вызывает сбой программы

В моей программе у меня есть ряд вкладок и выиграл каждую вкладку, есть поле со списком и QListWidget, Я пытаюсь прочитать состояние пунктов на QListWidget через указатель типа QListWidgetItem, Программа вылетает в этой точке кода. Я уверен, что здесь происходит сбой программы, так как я дважды проверил ее с помощью точек останова.

Это мой код;

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

Программа вылетает в этом блоке;

if(listItem->checkState() == Qt::Checked)
{
MainWindow::revenueList.append(true);
}
else if (listItem->checkState() == Qt::Unchecked)
{
MainWindow::revenueList.append(false);
}

Это, вероятно, потому, что указатель listItem указывает на неверное местоположение или NULL, Как мне решить эту проблему? Я что-то не так кодирую?

-1

Решение

Поэтому я исправил свою ошибку;
То, что я делал неправильно, было то, что я пытался получить доступ к пунктам на QListWidget используя значение, возвращаемое QComboBox::count() функция.
Количество элементов внутри поля со списком было 8; но количество предметов на этом QListWidget для данного QComboBox выбор был 3. Я решил, добавив еще один цикл for, чтобы перебрать элементы на QListWidget ограничивая количество циклов, используя QListWidget::count(),

Вот мой рабочий код;

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));

for(int index = 0; index < ui->inc_st_list->count(); index++)
{
//Point to QListWidget Item and read checkbox
QListWidgetItem *listItem = ui->inc_st_list->item(index);if(listItem->checkState() == Qt::Checked)
{
MainWindow::revenueList.append(true);
}
else if (listItem->checkState() == Qt::Unchecked)
{
MainWindow::revenueList.append(false);
}
}
}

qDebug() << "U: " << MainWindow::revenueList;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]