那么问题来了:

  • 我构造了一个 QTableView 并使用 setModel(myModel) 方法将模型 myModel 绑定(bind)到 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() 方法用于获取数据并将数据推送到模型。在这一步之后, View (即 _Table )发生了变化。

    最佳答案

    做这个:

    connect(dataModel, SIGNAL(modelReset()), SLOT(modelReset()));
    

    modelReset() 插槽中:
    void SomeClass::modelReset()
    {
      tableView->hideColumn(0);
    }
    

    10-08 11:37