내 프로그램에서 일련의 탭이 있고 각 탭에서 콤보 상자와 QListWidget
이 표시됩니다. 나는 QListWidgetItem
유형의 포인터를 통해 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);
}
이 아마 잘못된 위치 또는 NULL
에 대한 포인터 때문에 listItem
점이다. 이 문제는 어떻게 해결합니까? 내가 잘못 코딩 한 거니?
"이는 포인터 listItem이 잘못된 위치 또는 NULL을 가리키고 있기 때문일 수 있습니다." 아마? 그래서 게시하기 전에 디버거에서 이것을 확인하지 않으시겠습니까? 먼저 _exact_ 문제를 찾아냅니다. – MrEricSir
디버거에서이 작업을 수행하는 방법을 설명해 주시겠습니까? 나는 Qt 프로그래밍이 처음이다. 나 자신을 배워라. 어떤 조언이 도움이 될까요? – Vino
코드가 불완전합니다. 특히'main()'함수와 적어도 하나의'#include '함수가 빠져있는 것 같습니다. 코드를 [편집]하여 문제의 [mcve]가되도록 만드십시오. 그러면 문제를 재현하고 해결할 수 있습니다. 또한 [ask]를 읽어야합니다. –