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模型。