QSqlTableModel中的其他空行
Additional empty row in QSqlTableModel
本文关键字:其他 QSqlTableModel 更新时间:2023-10-16
我正在尝试添加总是空的最后一行。现在我有了代理模型,我在它上调用insertRow()-行被插入。但当最后一行更新(插入数据)时,我需要添加另一行。我应该连接哪个信号?
有时会出现奇怪的错误——当单击现有行时,数据会复制到最后一行。你知道哪里出了问题吗?
感谢的帮助
您可能需要将插槽连接到QSqlTableModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )
信号。
我已经试过了。
有几个问题让我重新思考如何实现这一点:
-
QSqlTableModel如何在内部处理无法处理的缓冲区(d指针访问(即使在子类化时也是如此)是你看到奇怪事情的原因将数据复制到最后一行。
-
无法区分表行数和基础模型行数。它们总是一样的,你必须使用一些标志来知道什么时候你已经有了新行,而不想添加另一行(更改任何行时都会发出dataChanged)。至少有4个信号需要连接才能保持这些标志的更新:
void beforeDelete ( int row ) void beforeInsert ( QSqlRecord & record ) void beforeUpdate ( int row, QSqlRecord & record ) void primeInsert ( int row, QSqlRecord & record )
-
如果您有多个列。你选择了哪种提交方式?(手动、onrowchange…等)根据这一点,您必须决定何时添加新的空白行。(上次更改有错误吗?)
不是不可能,而是丑陋。
Model和Table过于耦合,无法找到简单的解决方案。我最终使用了表下的一个表单来添加新数据。
我最好重新实现您自己的模型和/或表,而不是使用Qt提供的模型和表。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 类与私有变量的其他类之间的线程安全性
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- GlobalAlloc而不是其他分配方法
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 结构和双指针隐藏在其他结构中,多层混淆
- UE4在OnComponentBeginOverlap上铸造其他actor
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 保留对其他类的成员函数的引用
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 具有包含其他对象的类的对象创建顺序
- 让bool方法返回其他整数