问题标签 [qsqlquerymodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
107 浏览

python - 打印QSqlModel的SQL代码

有没有办法打印发送到数据库的 QSqlTableModel/QueryModel 的 SQL 代码?(我正在使用过滤器,并希望将其用于调试目的)

就像是:

0 投票
1 回答
1108 浏览

c++ - Qt 和 SQLite:使用数组元素进行过滤

我目前正在做一个项目,我对 Qt 和 SQLITE 还是很陌生。我目前有一个整数数组,想用它来获取链接到数组中元素的数据。比如数据是61616,就会输出Sarah。

我知道这是错误的。有人可以解释如何正确地做到这一点吗?

更新:

但是,它仍然没有输出到表中。

0 投票
2 回答
2764 浏览

python - 复杂SQL查询的可编辑QTableView

如何使可编辑的 QTableView 显示来自复杂 SQLite 查询的数据?

我需要用来自几个 SQLite 表的数据填充 QTableView。这需要用户可编辑。

由于查询有点复杂(包括 JOIN 和 CASE WHEN 等),我通过 QSqlTableModel 和 QSqlQuery 执行此操作。然而,有人告诉我,这不是 QSqlTableModels 应该使用的方式。那么,有人可以告诉我如何通过正确的方式获得像这里显示的结果吗?

此外,虽然我的 QTableViews 是可编辑的,但结果似乎并没有存储在 SQLite 数据库中。(当我注释掉 fill_tables 时,我在重新启动 GUI 后仍然得到原始结果。将 EditStrategy 更改为 OnFieldChange 没有帮助。)是因为我处理 QSqlTableModel 错误吗?

我已经尝试使用 QSqlRelationalTableModel 代替,但是我无法完成相同的查询复杂性,并且它也不会保存更改,就像上面的代码一样。这是就我的尝试而言:


要回答传入的问题:

可编辑性:

在此示例中,唯一绝对需要可编辑的列(以使更改到达数据库的方式)是 Country 列(并且那里的更改应该影响共享相同内容的所有其他行;例如,如果您更改任何大众汽车的“德国”到“法国”,然后都应将“法国”列为国家)。

如果您知道一种使第一个也可编辑的方法,以便更新数据库中的各个列,那将非常好看,但这不是必需的。(在我的真实表格中,我将此类“列连接”用于不可编辑的字段。)在这种特定情况下,我希望将“VW Polo”更改为“Marco Polo”也将“VW Golf”更新为“Marco Golf” ',因为列连接中使用的列是制造商.公司而不是汽车.公司。(实际上,可能会使用cars.company 进行连接,在这种情况下,'VW Golf' 将保持不变。但让我们假设上面给出的查询。)

第三列是计算统计结果的示例,这些通常仅供阅读(编辑它们没有意义)。

列顺序:

非常感谢能够选择列的显示顺序,即使跨连接表(就像我可以使用查询一样)。

0 投票
1 回答
689 浏览

qt - QTableView 未显示 SQLite 数据库中的所有数据

我有一个带有QTableViewQLineEdit的简单应用程序,我正在使用QSqlQueryModelQSortFilterProxyModel从 SQLite3 数据库中的表中获取数据并过滤结果(使用setFilterFixedString(the text from the QLineEdit))。数据库中的表有 8611 行大。

首次加载时,tableview 似乎并未显示数据库中的所有行。当我将字符串应用于过滤器(在 QLineEdit 上放置一些文本)时,并非所有预期结果都显示出来;我必须从 QLineEdit 中删除文本并向下滚动到 tableview 的末尾(它从数据库更新?!)然后问题就消失了:我的所有结果都来自数据库。

这是 QTableView 的已知错误吗?如何解决这个问题呢?

谢谢你。

PS:这是我的应用程序中关于这个问题的重要部分。

mainwindow.h

mainwindow.cpp

0 投票
0 回答
24 浏览

c++ - 接口中的计算量不会保存到 SQLlite DB 中,只保存不同的量

我的计算有问题。在构建系统并对其进行测试时,界面中显示的正确数量未显示/保存在数据库中。金额与界面中的金额不同。

笔记:

  1. SELECT SUM(TotalPrice) FROM Sold (Sold 表的屏幕截图将附在一起。
  2. 我将附上下面的屏幕截图。看看它以清楚地了解情况。
  3. 我已经用注释标记了问题代码//<--THIS-->//

这是我的代码:

接口和数据库中的不同数量

售出表

0 投票
1 回答
891 浏览

python - 来自 SQL 模型的 Qt 自定义多选 QComboBox

我想要一个下拉类别选择框,它允许用户单击多个选择,并且最好连接到 SQL 查询。我没有特别附加到组合框(每次点击时消失没有帮助),无论什么都能完成工作。

目前,我基本上已经将那个杰里装配在一起,它在技术上允许多个选择,但它只是基于随机鼠标是否被拖动到它上面。

希望这足够清楚,有人可以提供帮助!:)

0 投票
0 回答
247 浏览

qt - 用于动态更改信息的 QSqlQueryModel

尝试使用 QML 中的 UI 构建应用程序并从 Sqlite 数据库访问数据。

QML 视图可以TableView在数据网格中显示信息,并使用 C++ 中的模型。

模型是一个继承自QSqlQueryModel对数据库的查询的类:setQuery("SELECT * FROM Samples", GetDataBase())

我在另一个线程中每秒在数据库表中添加一个新行。

当我导航到TableView放置 的视图时,表格中的信息会填充网格。都好。但是,每次我添加一个新行时,我都会setQuery再次调用,但表格没有更新。如果我再次来回查看视图,它将填充所有新行。

我认为只要模型更改,视图就会“自动”通知,但我想我错过了任何通知让视图知道有新行或其他什么?

另外......这只是一个测试应用程序,但我预见在我的真实应用程序中,要在网格中显示的信息会变化得非常快,并且表格可以有几行信息(大约十万行)所以我想知道QSqlQueryModel是否此类数据的正确模型。

0 投票
1 回答
1874 浏览

c++ - Qt-如何实现一个可读写的QSqlQueryModel?

我对 QSqlQueryModel::setData() 和 QSqlQueryModel::flags() 进行了子类化和重新实现,现在我可以编辑这个模型,但这里会出现问题:

在此处输入图像描述

我编辑了记录中的第四个字段,但随后,第四个字段和后者都将其内容更改为相同:

在此处输入图像描述

这是我的 scoremodel.cpp:

我已经调试了很长时间。如果您能帮助我,我将不胜感激。
谢谢!

0 投票
1 回答
33 浏览

qt - 在其他文件(mainwindow.cpp除外)中,如何操作ui组件?

我的项目中有三个 .cpp 文件:
在此处输入图像描述

现在,我重新实现了 QSqlQueryModel 以使其可编辑,这意味着我重新实现了函数 QSqlQueryModel::setData() 和函数 QSqlQueryModel::flags() 并且我使用 QTableview 来显示数据。
在重新实现的函数 QSqlQueryModel::setData() 的最后,有一个刷新步骤再次将数据填充到模型中:

但我在 mainwindow.cpp 中用以下代码装饰了 tableView(可以引用 ui->tableView):

为了保持tableView外观的一致性,我也想在刷新步骤中进行这样的操作。
在我有限的 Qt/C++ 经验中,我无法有效地处理它。我在网上找了很久。但是没有用。请帮助或尝试给出一些想法如何实现这一点。谢谢!

0 投票
1 回答
168 浏览

python - 带有 OnManualSubmit 的 QSqlRelationalTableModel

我这样设置视图的模型:

但是在 tableview 中编辑第 10 列后,将显示 id-value (IOKey)。编辑前显示的是正确的相关值(“IOText”)。

如果我删除带有“setEditStrategy”的行,一切正常,但我想要一个带有“OnManualSubmit”的 EditStrategy。

谢谢!