Qt::QTableWidget->setRowCount(0) 在发布版本中使应用程序崩溃?



我有一个 3 列和 1000 行的 QTableWidget(取决于从数据库中获取的项目数量)。

我还有一个"重新加载"按钮来重新加载数据库中的所有项目。

"重新加载"按钮中,我想在从数据库中加载项目之前从 QTableWidget 中删除所有行。

当行计数 = 1 时,从 QTableWidget 中删除所有行会使应用程序崩溃。我使用以下逻辑删除所有行。

if( ui->tableWidget->rowCount() > 0)
{
  ui->tableWidget->setRowCount(0);
}

也尝试了以下逻辑

 while (ui->tableWidget->rowCount() > 0)
{
  ui->tableWidget->removeRow(0);
 }

当 rowCount = 1 时,我的应用程序使用任一逻辑崩溃。仅当我在发布模式下构建应用程序而它在调试模式下工作正常时,才会发生这种情况。

我能知道为什么我的应用程序崩溃吗?

我遇到了同样的问题,从一天到另一天它停止工作,我找不到我的代码的哪一部分使我的程序崩溃。

我的程序用于从文件夹中读取文件并将文件信息上传到QTableWidget中,我也使用cellWidgets获取某些信息。

这些是我想到的问题,您应该检查它们是否发生在您身上:

  • 该程序一直在修改表,所以也许我正在尝试访问一个空表。所以我注释了我调用表行的行并对其进行了调试,但这不是问题。

  • 这可能是调试器问题,所以我尝试在发布和配置文件模式下构建它,但仍然不起作用。

  • 我在尝试访问cellWidget信息时可能会遇到问题,所以我检查了一下,我没有尝试访问它。

  • 也许问题是当我试图消除具有cellWidget的行时,所以我在将行计数设置为0之前尝试使用ui->tableWidget->clearContents()(不起作用)

在尝试了所有这些之后,我发现了这篇文章。基本上我用它的内部实现ui->table->model()->removeRows(0,ui->table->rowCount());替换了setRowCount(0),调试了它并工作了。

最新更新