Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QSortFilterProxyModel不更新QTableview_C++_Qt_Qstandarditemmodel_Qsortfilterproxymodel - Fatal编程技术网

C++ QSortFilterProxyModel不更新QTableview

C++ QSortFilterProxyModel不更新QTableview,c++,qt,qstandarditemmodel,qsortfilterproxymodel,C++,Qt,Qstandarditemmodel,Qsortfilterproxymodel,我正在尝试将QSortFilterProxyModel与QStandardItemmodel一起使用,但filterAcceptedRows()未更新视图 在函数filterAcceptedRows()中,行被正确地归档,但视图未更新。它仍在显示所有行。在下面你可以找到我已经尝试过的代码,有人能告诉我我这里遗漏了什么吗 这是QDialog中的代码 m_modelApp = new QStandardItemModel(); m_proxyApp = new ProxyModelApp(); m_

我正在尝试将QSortFilterProxyModel与QStandardItemmodel一起使用,但filterAcceptedRows()未更新视图

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

这是QDialog中的代码

m_modelApp = new QStandardItemModel();
m_proxyApp = new ProxyModelApp();
m_proxyApp->setSourceModel(m_modelApp);
m_lstApp->setModel(m_modelApp);
这就是我向模型添加数据的方式

    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);
我想知道,为什么在成功过滤之后,filterAcceptedRows()函数不更新视图


谢谢。

您可以使用
m_modelApp
查看原始未过滤模型。您已经创建了
m_proxyApp
,但实际上并没有在任何地方使用它。

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

您的表代理模型应该按照以下顺序初始化

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

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

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

尝试调用代理
invalidateFilter()
每当我尝试筛选它时,我都会调用invalidateFilter。我用这个函数更新代码。
m_listApp->setModel(m_proxyApp)
谢谢。我理解了这个问题
m_lstApp->setModel(m_proxyApp)尝试调用您的代理
invalidateFilter()
每当我尝试对其进行筛选时,我都会调用invalidateFilter。我用这个函数更新代码。
m_listApp->setModel(m_proxyApp)
谢谢。我理解了这个问题
m_lstApp->setModel(m_proxyApp)
我已将Tableview模型设置为
m_modelApp
,将
m_proxyApp
的源模型设置为
m_modelApp
我假设
m_lstApp
是有问题的视图。您为模型提供了
m_modelApp
——它对
m_proxyApp
一无所知,谢谢Igor。我理解这个问题。我已经将Tableview模型设置为
m_modelApp
,将
m_proxyApp
的源模型设置为
m_modelApp
我假设
m_lstApp
是有问题的视图。您为模型提供了
m_modelApp
——它对
m_proxyApp
一无所知,谢谢Igor。我理解这个问题。