- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用继承 (QSqlQueryModel
) 制作了myModel
,并且我 将列插入其中。我想插入 QString
类型的数据,但我不知道该怎么做。
QSQlQueryModel
是只读模型。要使其可读可写,您必须对其进行子类化并重新实现 setData()
和 flags()
。
我想重写这两个方法,这是我到目前为止所做的:
dialog.cpp:
this->model = new myModel(this);
model->setQuery("SELECT * lists");
model->insertColumn(3);
model->setHeaderData(3, Qt::Horizontal, QObject::tr("string"));
qDebug() << model->setData(model->index(0,3),"string",Qt::EditRole);
// column add, column set data using setdata()
ui->tvGameList->setModel(model);
myModel.h:
class myModel : public QSqlQueryModel
{
Q_OBJECT
public:
myModel(QObject *parent = 0);
Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE;
bool setData(const QModelIndex &index, const QVariant &value, int role) Q_DECL_OVERRIDE;
};
myModel.cpp:
#include "mymodel.h"
#include <QSqlQuery>
myModel::myModel(QObject *parent): QSqlQueryModel(parent)
{
}
Qt::ItemFlags myModel::flags(const QModelIndex &index) const
{
Qt::ItemFlags flags = QSqlQueryModel::flags(index);
if (index.column() == 1 || index.column() == 2)
flags |= Qt::ItemIsEditable;
return flags;
}
bool myModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
{
if (index.isValid() && role == Qt::EditRole)
{
// I don't know here
emit dataChanged(index, index);
return true;
}
return false;
}
最佳答案
参见 Qt 示例,setData 必须像通常的 SQL 一样调用 SQL UPDATE 语句。
Qt::ItemFlags EditableSqlModel::flags(
const QModelIndex &index) const
{
Qt::ItemFlags flags = QSqlQueryModel::flags(index);
if (index.column() == 1 || index.column() == 2)
flags |= Qt::ItemIsEditable;
return flags;
}
bool EditableSqlModel::setData(const QModelIndex &index, const QVariant &value, int /* role */)
{
if (index.column() < 1 || index.column() > 2)
return false;
QModelIndex primaryKeyIndex = QSqlQueryModel::index(index.row(), 0);
int id = data(primaryKeyIndex).toInt();
clear();
bool ok;
if (index.column() == 1) {
ok = setFirstName(id, value.toString());
} else {
ok = setLastName(id, value.toString());
}
refresh();
return ok;
}
bool EditableSqlModel::setFirstName(int personId, const QString &firstName)
{
QSqlQuery query;
query.prepare("update person set firstname = ? where id = ?");
query.addBindValue(firstName);
query.addBindValue(personId);
return query.exec();
}
关于c++ - 如何在qsqlquerymodel(QAbstractItemModel)中编写setdata()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33781346/
我正在使用 Heatmap.js 库在 Google map 上创建 map 叠加层。只要我在标签中对数据进行硬编码,它就可以很好地工作。 var myLatlng = new google.map
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我知道我们应该使用setData()来更新图表的系列, 但我不知道在创建某些柱形图时如何更新该系列,因为它的系列如下所示 series: [{ name: 'Tokyo',
我正在使用 series[0].setData() 函数使用按钮更改 High Charts 图表上的系列。它确实更改了数据并更新了图表,但是当我尝试使用第二个按钮来重置我的后台数据时,似乎什么也没有
我想用两行设置我的条形数据。 不可能用 \n 来做到这一点。 我使用 MPAndroidChart 版本 v2.2.4。 我用这段代码尝试过: Bar1 = new BarEntry(20f,0,"2
我有一张 Mapbox GL map ,其中有一个图层和该图层上的多个标记,我正在尝试更新特定标记,因此我使用 setData 来仅更新一个标记,但 setData 会将整个图层标记重置为仅添加一点,
我在使用 jquery-flot(flotcharts)制作实时图表时遇到麻烦。 这是我的代码: $(document).ready(function(){ var test = function()
我没有发现这两个函数有任何区别。 使用以下 JavaScript 代码: var x = {}; $(x).bind({ setData: function (event, key, value)
我正在尝试创建一个饼图,我可以通过一个按钮在两个数据系列之间切换。 当我将值直接传递给按钮 onclick 事件上的 setData() 函数时,一切正常。参见 jsfiddle (在职的)。 但是如
当CKEditor图像中的设置数据在编辑器区域消失时。链接和其他格式都可以,所以看起来不像双引号。另外,我尝试了绝对定位和外部图像,所以这不是找不到图像的问题。 这是我的代码: function ge
我使用新版本的 CKEditor。我面临的问题是额外的段落或 当我这样做时,在数据周围添加标签 setData 。我这样做是这样的: editor.setData(editor.getData()+'
我在 JSP 页面中定义了以下文本区域: 在我的 js 文件中,我设置内容数据如下: CKEDITOR.instances.edit_subtaskstep_notes.setData("Hello
我目前正在尝试在从文件加载后使用 SetData<> 在 Texture2D 对象上手动设置纹理数据。已在启用 MipMap 的情况下创建 Texture2D。数据已从使用 DXT1 压缩保存的 .d
我正在开发我的 SMS/MMS 应用程序并使用 android 消息通知样式。我想这样做,以便当用户发送图像时,我可以使用 MessagingStyle.Message.setData(uri, mi
我已经构建了一些自定义插件,但只有一个是监听键盘的按键事件。 在代码下方,您可以看到设置事件的设置。 (这有点基本) 现在我遇到了以下问题,如果我在 instanceReady 监听器中使用 edit
我有一个 QListWidget的日历。每个QListWidgetItem在逻辑上与 Calendar 的实例相关联,这是一个属于应用程序模型端的类。 我可以使用 QListWidgetItem::s
我有一个气泡图,可以与 jQuery UI slider 一起更改图表的内容。 (“通过时间”)但是,图表上的气泡可能会按周进出图表,并且在使用 setData 更新时,它忽略任何最初不存在的新系列。
在我的 Angular 应用程序中,我正在使用 Directions api 并尝试添加从一个方向到另一个方向的路线路径。第一次发出ajax请求时,路由路径已正确创建,但从第二次开始,我看不到路由路径
我使用的是 Angular,并使用 ngModel 设置 ckeditor 的数据 - 当我们渲染时我们设置数据 editor.setData(ngModel.$viewValue); 我们尝试保留光
我正在尝试为用户上载化身到Firestore存储并返回图像URL,以将其保存为用户实例上用户的avatarUrl属性。我可以将图片成功上传到Firestore。问题与URL的接收有关。异步函数会延迟,
我是一名优秀的程序员,十分优秀!