QT SqlQueryModel,TreeView和SortFilterProxyModel如何获取选定的行

问题描述:

我有一个TreeView,它由一个由SqlQueryModel提供的SortFilterProxyModel提供。QT SqlQueryModel,TreeView和SortFilterProxyModel如何获取选定的行

现在我想添加双击事件,以便编辑对话框加载选定行中的数据并且可以进行编辑。

但我得到的是一个“随机”行被加载,这就像TreeView当前索引是错误的。我的猜测是SortFilterProxyModel搞砸了,但我不知道如何获得正确的索引。

这是我怎么设置我的模型:

proxyModel = new SortFilterProxyModel(); 

treeView = new QTreeView(); 
treeView->setModel(proxyModel); 

sqlModel = new QSqlQueryModel(this); 
proxyModel->setSourceModel(sqlModel); 

这是我的代码,可能得到错误的行:

QSqlRecord product = sqlModel->record(treeView->currentIndex().row()); 

我在QT是一个新手,但我已经到处找在网上找不到答案,所以我希望有人在这里可以帮助我! :d

我会离开,他们给了我另一个Web答案:

你需要采取的视图的CURRENTINDEX(),这是 代理的分类/过滤器侧的模型索引模型,并使用代理模型的 QSortFilterProxyModel :: mapToSource()函数来获取源模型的对应模型索引 。然后,您可以使用该索引(如果有效)直接寻址SQL模型。