【发布时间】:2012-12-12 11:46:28
【问题描述】:
好吧,问题来了:
我构造了一个
QTableView并使用setModel(myModel)方法将模型myModel绑定到myTableView;一开始
myModel中没有数据,我用hideColumn(0)来做这个工作,效果很好,而在我将数据加载到myModel之后,我隐藏的列刚刚出现。
谁能告诉我当模型发生变化时如何保持列的隐藏状态?
欢迎提出任何建议。
好的,这里是代码。
void ModelView::createModelAndView()
{
_TableModel = new TableModel(this);
_Table = new QTableView(this);
_Table->setModel(_TableModel);
_Table->hideColumn(0);
_Table->hideColumn(10);
}
现在_TableModel 没有数据了。
然后如下:
_TableModel->loadData();
loadData() 方法用于获取数据并将数据推送到模型。在这一步之后,视图(即_Table)发生了变化。
【问题讨论】:
-
你经常更换模型吗?
-
不,最大的区别在于里面是否有数据(即项目)。
-
好吧,我问的是因为隐藏列应该在模型数据更改时保持不变......但当您将模型更改为另一个时可能不会。
-
我没有改变模型,只有一个模型,并且模型在初始化期间无法获取所有项目,但后来有一个方法将数据加载到其中。所以模型不会改变,视图也不会改变。
-
对,但是一旦在第一次提取数据后将列设置为隐藏,它应该在视图中保持这种状态。问题是在获得一些数据之前,视图永远不会被赋予模型的维度。您使用的是什么类型的模型?如果它是 QStandardItemModel,您是否使用 row/col 值对其进行初始化?
标签: c++ qt model-view