如何从 QTableWidget 中删除所有行

新手上路,请多包涵

我正在尝试从 QTableWidget 中删除所有行。这是我尝试过的。

 for ( int i = 0; i < mTestTable->rowCount(); ++i )
{
    mTestTable->removeRow(i);
}

我的桌子上有两行。但这只是删除了一行。一个原因可能是我没有创建具有固定表大小的表。 rowCount() 的 Qt 文档说,

此属性保存表中的行数。

默认情况下,对于没有行数和列数的表,此属性包含值 0。

那么如果是这种情况,从表中删除所有行的最佳方法是什么?

原文由 vinayan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

只需将行数设置为 0:

 mTestTable->setRowCount(0);

它会自动删除 QTableWidgetItem s,通过调用 removeRows 你可以在 QTableWidget 内部模型代码中看到:

 void QTableModel::setRowCount(int rows)
{
    int rc = verticalHeaderItems.count();
    if (rows < 0 || rc == rows)
        return;
    if (rc < rows)
        insertRows(qMax(rc, 0), rows - rc);
    else
        removeRows(qMax(rows, 0), rc - rows);
}

原文由 alexisdm 发布,翻译遵循 CC BY-SA 3.0 许可协议

python 你可以将 rowCount 设置为零,这样就可以了!

 tableWidget.setRowCount(0)

此代码使用 PySide6 进行测试。希望它也适用于 PyQt5 和 PyQt6。

原文由 Mahmudur Rahman Shovon 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题