我有一个 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)
,调试了它并工作了。