在我的程序中,我有一系列标签,并赢得每个标签,有一个组合框和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
。我该如何解决这个问题?我编码错了吗?
答案 0 :(得分:0)
所以我修正了我的错误;
我错误的部分是我尝试使用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;
}