首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSortFilterProxyModel不更新QTableview

QSortFilterProxyModel不更新QTableview
EN

Stack Overflow用户
提问于 2019-04-02 23:02:25
回答 2查看 724关注 0票数 0

我尝试在QStandardItemmodel中使用QSortFilterProxyModel,但是filterAcceptedRows()没有更新视图。

在函数filterAcceptedRows()中正确地对行进行了过滤,但是视图没有更新。它仍然显示所有行。下面你可以找到我已经尝试过的代码,有人能告诉我我这里遗漏了什么吗?

这是QDialog中的代码。

代码语言:javascript
复制
m_modelApp = new QStandardItemModel();
m_proxyApp = new ProxyModelApp();
m_proxyApp->setSourceModel(m_modelApp);
m_lstApp->setModel(m_modelApp);

这就是我向模型添加数据的方式。

代码语言:javascript
复制
    QStandardItem *item1 = new QStandardItem();
    QStandardItem *item2 = new QStandardItem();
    QStandardItem *item3 = new QStandardItem();
    QStandardItem *item4 = new QStandardItem();
    QStandardItem *item5 = new QStandardItem();
    QStandardItem *itemCheck = new QStandardItem();

    item1->setData(l_sRefProduitSW,Qt::DisplayRole);
    item2->setData("To Define",Qt::DisplayRole);
    item3->setData(app.GetRefApp(),Qt::DisplayRole);
    item4->setData(app.GetRefIdentApp(),Qt::DisplayRole);
    item5->setData(app.GetRefFNRApp(),Qt::DisplayRole);

    itemCheck->setCheckable(true);
    if(m_xRefBe->GetListeAppBE().contains(app))
        itemCheck->setCheckState(Qt::Checked);
    else
        itemCheck->setCheckState(Qt::Unchecked);

    listItems<<itemCheck<<item1<<item2<<item3<<item4<<item5;
    m_modelApp->appendRow(listItems);

ProxyModelApp中的一个筛选器。

代码语言:javascript
复制
void ProxyModelApp::setRefLibApp(QString refLibApp){
    if(m_refLibApp != refLibApp)
        m_refLibApp = refLibApp;
    invalidateFilter();
}

我想知道,为什么在filterAcceptedRows()函数中成功过滤后没有更新视图。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-04-02 23:06:44

您让视图使用m_modelApp -原始的未过滤模型。您已经创建了m_proxyApp,但实际上并没有在任何地方使用它。

票数 1
EN

Stack Overflow用户

发布于 2019-04-02 23:17:48

应按以下顺序初始化表代理模型

代码语言:javascript
复制
m_modelApp = new QStandardItemModel();  // Original model
m_proxyApp = new ProxyModelApp();       // Custome proxy model
m_proxyApp->setSourceModel(m_modelApp); // Proxy to original model.
m_lstApp->setModel(m_proxyApp);         // Set the proxy model to the table view
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55477913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档