【发布时间】:2014-11-18 04:11:15
【问题描述】:
我目前正在定制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()));
但必须有另一种方法来做到这一点。我正在寻找一个函数,它只会告诉视图列数已更改。但是我发现的唯一一个 (QTreeView::columnCountChanged(int oldCount, int newCount)) 是受保护的...
【问题讨论】:
-
您的模型可能有更简单的方法。您在视图中寻找什么结果?
-
好吧,我现在想要的是,在我增加了 Number of couns 之后,它应该显示这个新数字,所以基本上在视图中添加一个。