2012-11-22 93 views
1

我有我自己的QAbstractTableModel连接到SQLite。我从数据库获取数据并按列名将其写入我的列表。我不想在查找数据时通过SQL查询处理我的表。Qt QAbstractModel寻找数据

你认为怎么样?这是正常的吗?

请给我一些建议。

+0

你应该尝试重写这个问题,我不确定你在问什么。你只是在寻找[QSqlTableModel](http://qt-project.org/doc/qt-4.8/qsqltablemodel.html)?它位于文档以及其他Qt Sql类(http://qt-project.org/doc/qt-4.8/qtsql.html),如QSqlRelationalTableModel。 – Leiaz

+0

我的问题是,我从sqlite获取数据,并将它们写入模型,当我搜索任何数据为exp某人的名字我不想写入sql命令我想用我的模型找到它们 – developer

回答

1

要搜索模型中的数据,您可以使用QSortFilterProxyModel。您将模型设置为代理模型的源模型,并在“搜索结果”视图中显示代理模型。

您可以使用setFilterRegExp()setFilterKeyColumn()来指定您正在查找的名称和“名称”列。如果您想要更复杂的过滤,您也可以将其子类化。有an example in the doc

0
  1. 不,QtSQL模块不提供任何ORM,所以你必须自己编写SQL查询。

  2. 但是,您可以使用QSortFilterProxyModel(或其子类,或者甚至在您的子类QAbstractTableModel中放置过滤代码)进行搜索/过滤。但我建议你不要这样做,因为关系数据库可能会(并且很可能会)优化您的搜索。