繁体   English   中英

QTreeView更新列号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM