QTreeView更新列号

时间:2014-09-23 20:05:51

标签: c++ qt qtreeview qt5.3

我目前正致力于自定义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))受到保护......

1 个答案:

答案 0 :(得分:1)

这里有一些其他的信号,树形图的模式可以给出这些信号,如果你插入一个列,所以只需使用适当的一个并连接到你的表视图上的更新,虽然我会想到如果你改变底层模型视图应该更新,如果它没有重置模型

ui->treeView->model()->layoutChanged();
ui->treeView->model()->dataChanged();
ui->treeView->model()->columnsInserted();
ui->treeView->model()->columnsMoved();