vin*_*yan 34 c++ qt qtablewidget
我试图从QTableWidget中删除所有行.这是我试过的.
for ( int i = 0; i < mTestTable->rowCount(); ++i )
{
mTestTable->removeRow(i);
}
Run Code Online (Sandbox Code Playgroud)
我的桌子上有两排.但这只删了一行.原因可能是我没有创建具有固定表大小的表.rowCount()的Qt文档说,
此属性保存表中的行数.
默认情况下,对于没有行和列计数的表,此属性包含值0.
那么如果是这种情况,从表中删除所有行的最佳方法是什么?
ale*_*sdm 75
只需将行计数设置为0:
mTestTable->setRowCount(0);
Run Code Online (Sandbox Code Playgroud)
它会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);
}
Run Code Online (Sandbox Code Playgroud)
joh*_*ohn 28
我不知道,QTableWidget但你的代码似乎有一个逻辑缺陷.你忘记了当你绕过循环时,你正在减少它的值mTestTable->rowCount().删除一行后,i将是一行,也mTestTable->rowCount()将是一行,因此循环停止.
我会这样做的
while (mTestTable->rowCount() > 0)
{
mTestTable->removeRow(0);
}
Run Code Online (Sandbox Code Playgroud)
小智 11
AFAIK setRowCount(0)什么都没删除.物体仍在那里,但不再可见.
yourtable->model()->removeRows(0, yourtable->rowCount());
Run Code Online (Sandbox Code Playgroud)
删除行的简单方法是将行数设置为零。这在内部使用 removeRows()。
table->setRowCount(0);
Run Code Online (Sandbox Code Playgroud)
您还可以清除内容,然后删除所有行。
table->clearContents();
table->model()->removeRows(0, table->rowCount());
Run Code Online (Sandbox Code Playgroud)
两个片段都保持标题不变!
如果您也需要摆脱标题,您可以从 切换clearContents()到clear()。
小智 5
QTableWidget test;
test.clear();
test.setRowCount( 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48855 次 |
| 最近记录: |