Qt - 清空 QTableView 的内容

8
我在使用Qt 4.7,并且有一个对话框,其中包含一个QTableView和一个QButton。当单击QButton时,它必须清除QTableView中的所有数据。我不确定如何实现这一点。我已经在网上搜索了一段时间,但是没有找到太有用的东西。基于我在这里找到的内容,我尝试了下面的方法: void MyClass::on_myButton_clicked() { myTableView->model()->clear(); } 然而,这会导致以下错误:
error: C2039: 'clear' : is not a member of 'QAbstractItemModel'

我是否不小心忽略了其他方法来完成这个任务?谢谢!

2个回答

10

如果您以后不需要模型中的数据,我建议您重置模型。如果您使用的是自定义模型,则可以创建一个子类并实现一个插槽,例如:

void clear(){
   this->beginResetModel();
   ... // clear the content of your model here
   this->endResetModel();
{

只需检查 QAbstractItemView::reset()


1
你贴的链接已经失效了。 - Andrew Lalis
1
更新了失效的链接。 - JBES

10

myTableView->model()函数返回一个不包含clear()方法的QAbstractItemModel。您应该调用您的模型的clear方法。如果您有如下模型:

QStandardItemModel * model= new QStandardItemModel( 2, 4 );

调用clear应该从模型中删除所有数据,因为它提供了显示相关模型中的数据的视图,因此也会擦除视图:

model->clear();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接