#include <QtSql/QSqlTableModel>
#include <QtSql/QSqlRelationalDelegate>
#include <QtSql/QSqlRecord>
#include <QPushButton>
MyDialog
::MyDialog(int id,
QWidget *parent
){
// ageSpinBox->setMaxCount(3);
// ageSpinBox->addItem("a");
// ageSpinBox->addItem("b");
// ageSpinBox->addItem("c");
//set up the model
tableModel->setTable("lista");
tableModel->select();
tableModel->setHeaderData(0, Qt::Horizontal, tr("name"));
tableModel->setHeaderData(1, Qt::Horizontal, tr("address"));
tableModel->setHeaderData(2, Qt::Horizontal, tr("flat"));
//mapper
mapper->setModel(tableModel);
mapper->addMapping(nameEdit, 0);
mapper->addMapping(addressEdit, 1);
mapper->addMapping(flatComboBox, 2);
mapper->toFirst();
//set up the view
myTableView->setModel(tableModel);
myTableView->resizeColumnsToContents();
myTableView->setWindowTitle("pame reeee");
//a second view just to check if the database is updated
view2->setModel(tableModel);
view2->setWindowTitle("Table Model (View 2)");
view2->resizeColumnsToContents();
//creating the first sql entry
createConnection();
//just to print out some results
//add new row
newRowBtn->setText("add new row");
connect(newRowBtn,SIGNAL(clicked()),this,SLOT(addNewRow()));
vboxlayout->addWidget(myTableView);
vboxlayout->addWidget(view2);
vboxlayout
->addWidget
(new QLabel("print info..."));
vboxlayout->addWidget(le);
vboxlayout->addWidget(newRowBtn);
setLayout(vboxlayout);
}
MyDialog::~MyDialog()
{
}
bool MyDialog::createConnection()
{
db.setDatabaseName(":memory:");
if (!db.open()) {
QMessageBox::critical(0, qApp
->tr
("Cannot open database"),
qApp->tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information how "
"to build it.\n\n"
return false;
}
query.exec("create table lista (name varchar(20) primary key, "
"address varchar(20), flat int)");
query.exec("insert into lista values( 'john smith', '13,oxford str',3)");
return true;
}
void MyDialog::addNewRow()
{
int row = tableModel->rowCount();
tableModel->insertRow(row);
index = tableModel->index(row, 0);
myTableView->setCurrentIndex(index);
myTableView->edit(index);
}
#include <QtSql/QSqlTableModel>
#include <QtSql/QSqlRelationalDelegate>
#include <QtSql/QSqlRecord>
#include <QPushButton>
MyDialog::MyDialog(int id, QWidget *parent)
: QDialog(parent)
{
flatComboBox = new QComboBox();
// ageSpinBox->setMaxCount(3);
// ageSpinBox->addItem("a");
// ageSpinBox->addItem("b");
// ageSpinBox->addItem("c");
nameEdit = new QLineEdit();
addressEdit = new QTextEdit();
//set up the model
tableModel = new QSqlTableModel(this);
tableModel->setEditStrategy(QSqlTableModel::OnFieldChange);
tableModel->setTable("lista");
tableModel->select();
tableModel->setHeaderData(0, Qt::Horizontal, tr("name"));
tableModel->setHeaderData(1, Qt::Horizontal, tr("address"));
tableModel->setHeaderData(2, Qt::Horizontal, tr("flat"));
//mapper
mapper = new QDataWidgetMapper(this);
mapper->setModel(tableModel);
mapper->addMapping(nameEdit, 0);
mapper->addMapping(addressEdit, 1);
mapper->addMapping(flatComboBox, 2);
mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
mapper->toFirst();
//set up the view
myTableView = new QTableView(this);
myTableView->setModel(tableModel);
myTableView->resizeColumnsToContents();
myTableView->setWindowTitle("pame reeee");
//a second view just to check if the database is updated
QTableView *view2 = new QTableView(this);
view2->setModel(tableModel);
view2->setWindowTitle("Table Model (View 2)");
view2->resizeColumnsToContents();
//creating the first sql entry
createConnection();
//just to print out some results
QLineEdit* le = new QLineEdit(this);
//add new row
QPushButton *newRowBtn = new QPushButton;
newRowBtn->setText("add new row");
connect(newRowBtn,SIGNAL(clicked()),this,SLOT(addNewRow()));
vboxlayout = new QVBoxLayout(this);
vboxlayout->addWidget(myTableView);
vboxlayout->addWidget(view2);
vboxlayout->addWidget(new QLabel("print info..."));
vboxlayout->addWidget(le);
vboxlayout->addWidget(newRowBtn);
setLayout(vboxlayout);
}
MyDialog::~MyDialog()
{
}
bool MyDialog::createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
QMessageBox::critical(0, qApp->tr("Cannot open database"),
qApp->tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information how "
"to build it.\n\n"
"Click Cancel to exit."), QMessageBox::Cancel);
return false;
}
QSqlQuery query;
query.exec("create table lista (name varchar(20) primary key, "
"address varchar(20), flat int)");
query.exec("insert into lista values( 'john smith', '13,oxford str',3)");
return true;
}
void MyDialog::addNewRow()
{
QModelIndex index;
int row = tableModel->rowCount();
tableModel->insertRow(row);
index = tableModel->index(row, 0);
myTableView->setCurrentIndex(index);
myTableView->edit(index);
}
To copy to clipboard, switch view to plain text mode
Bookmarks