Qt - 清除QTableView的内容

thn*_*tls 7 c++ qt model clear qtableview

我在Qt 4.7中工作,并且有一个对话框,其中包含QTableView和QButton(以及其他不相关的内容).单击QButton时,它必须清除QTableView中的所有数据.我不确定如何实现这一目标.我在网上看了一会儿,但没有发现任何有用的东西.基于我在这里找到的,我尝试了这个:

void MyClass::on_myButton_clicked() { myTableView->model()->clear(); }

但是,这会产生以下错误:

error: C2039: 'clear' : is not a member of 'QAbstractItemModel'
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点,我不小心忽视了?谢谢!

OnW*_*ady 8

我会重置模型(如果以后不需要模型中的数据).对模型进行子类化(如果是自定义模型)并实现类似的插槽

void clear(){
   this->beginResetModel();
   ... // clear the content of your model here
   this->endResetModel();
{
Run Code Online (Sandbox Code Playgroud)

检查一下.


Nej*_*jat 8

该函数myTableView->model()返回一个QAbstractItemModel不包含该clear()方法的函数.您应该调用模型的清晰方法.如果你有一个像这样的模型:

QStandardItemModel * model= new QStandardItemModel( 2, 4 );
Run Code Online (Sandbox Code Playgroud)

调用clear应删除模型中删除视图的所有数据,因为它是为了显示相关模型中的数据而提供的:

model->clear();
Run Code Online (Sandbox Code Playgroud)