[英]QTreeView update column number
我目前正在对QAbstractItemModel
进行自定义,遇到了问题。 到目前为止,该模型本身还可以正常工作,但是如果尝试使用QTreeView显示该模型,则会遇到问题。
模型本身可以根据其数据自行更改其列号。 但是视图将永远不会更新显示的列数,只会更新其内容。 我做了重载insertColumns
:
bool MyModel::insertColumns(int column, int count, const QModelIndex &parent)
{
bool success;
beginInsertColumns(parent, column, column + count - 1);
success = this->getItem(parent)->insertColumns(column, count);
endInsertColumns();
return success;
}
我做了一点试验,发现如果每次重置并设置“视图”,它将显示正确的列数:
connect(this->model, SIGNAL(columnsChanged()), this->ui->treeView, SLOT(reset()));
但是必须有另一种方式来做到这一点。 我正在寻找一个函数,它将告诉View列数已更改。 但是我发现的唯一一个( QTreeView::columnCountChanged(int oldCount, int newCount)
)受保护...
这是一些其他信号,treeview的模式可以发出这些信号,如果您插入一列,则应该全部触发,因此只需使用适当的信号并连接即可在表视图上进行更新,尽管我会认为,如果您更改基础模型,则该视图应该更新,如果它不重置模型
ui->treeView->model()->layoutChanged();
ui->treeView->model()->dataChanged();
ui->treeView->model()->columnsInserted();
ui->treeView->model()->columnsMoved();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.