1
/****************************************************************************
3
** Copyright (C) 2004-2005 Trolltech AS. All rights reserved.
5
** This file is part of the example classes of the Qt Toolkit.
7
** This file may be distributed under the terms of the Q Public License
8
** as defined by Trolltech AS of Norway and appearing in the file
9
** LICENSE.QPL included in the packaging of this file.
11
** This file may be distributed and/or modified under the terms of the
12
** GNU General Public License version 2 as published by the Free Software
13
** Foundation and appearing in the file LICENSE.GPL included in the
14
** packaging of this file.
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
17
** information about Qt Commercial License Agreements.
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
21
** Contact info@trolltech.com if any conditions of this licensing are
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27
****************************************************************************/
31
#include "editablesqlmodel.h"
33
EditableSqlModel::EditableSqlModel(QObject *parent)
34
: QSqlQueryModel(parent)
38
Qt::ItemFlags EditableSqlModel::flags(
39
const QModelIndex &index) const
41
Qt::ItemFlags flags = QSqlQueryModel::flags(index);
42
if (index.column() == 1 || index.column() == 2)
43
flags |= Qt::ItemIsEditable;
47
bool EditableSqlModel::setData(const QModelIndex &index, const QVariant &value, int /* role */)
49
if (index.column() < 1 || index.column() > 2)
52
QModelIndex primaryKeyIndex = QSqlQueryModel::index(index.row(), 0);
53
int id = data(primaryKeyIndex).toInt();
58
if (index.column() == 1) {
59
ok = setFirstName(id, value.toString());
61
ok = setLastName(id, value.toString());
67
void EditableSqlModel::refresh()
69
setQuery("select * from person");
70
setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
71
setHeaderData(1, Qt::Horizontal, QObject::tr("First name"));
72
setHeaderData(2, Qt::Horizontal, QObject::tr("Last name"));
75
bool EditableSqlModel::setFirstName(int personId, const QString &firstName)
78
query.prepare("update person set firstname = ? where id = ?");
79
query.addBindValue(firstName);
80
query.addBindValue(personId);
84
bool EditableSqlModel::setLastName(int personId, const QString &lastName)
87
query.prepare("update person set lastname = ? where id = ?");
88
query.addBindValue(lastName);
89
query.addBindValue(personId);