如何使用一片QSqlQueryModel?

时间:2015-12-03 20:24:56

标签: python c++ sql qt

我有一个QSqlQueryModel包含一个查询结果,而不是几万行。

我对这个模型有两个用例:

  1. 一个用例,我需要完整的模型来计算行的一些统计信息;
  2. 我希望显示内容的概述的一个用例。
  3. 我的问题是第二种情况,什么是“切片”QSqlQueryModel只显示N个第一个记录的正确方法?

    我想到了几种解决方案,但这些解决方案要么不完全合适,要么无法使它们发挥作用:

    • 在查询中添加LIMIT:由于案例1不合适。我可以想象有2个模型(一个有限制,一个没有)但是
      • 不太好
      • 查询来自用户输入,所以他/她已经可以插入一个LIMIT,不能有两个
    • 显示的分页但无法理解在实践中如何操作(目前,整个模型显示为QTableView)是否有更好的选择?

    我现在的代码基本上是:

    QString q = query_edit->toPlainText();
    QSqlQuery query (q);
    QSqlQueryModel *model = new QSqlQueryModel;
    model->setQuery(query);
    QTableView *result_view = new QTableView;
    result_view->setModel(model);
    

1 个答案:

答案 0 :(得分:1)

我真的鼓励你使用两种型号。如果你想在事后改变东西,你将享受自由。

我仍然想要一个模型,你可以做以下事情:

  1. 子类QSqlQueryModel
  2. 重新实现int rowCount(...) const方法以满足您的需求。如果你需要一些花哨的概述 - >重新实现QVariant data(...) const和i nt columnCount(...) const方法。
  3. 实施某种原始输出功能,以获取统计分析的所有数据。