ورود

View Full Version : ساخت رویدار برای جدول



baradar
چهارشنبه 21 فروردین 1392, 13:48 عصر
سلام

من یک فرم دارم که یک tableview روی آن قرار دارد که اطلاعات را از دیتابیس میخونم کاری که من میخوام بکنم
اینه که وقتی روی یکی از سلولهای tableview دوبار کلیک میکنم و ویرایش میکنم با زدن کلید enter ویرایش تو دیتابیس ثبت بشه کد ثبت ویرایش داخل دیتابیس را میدونم چیه ولی اینکه چطوری براش رویداد enter را تعریف کنم نمیدونم چون خودشم که keypressevent رو نداره لطفا راهنمایی کنید

alamate_aoal
پنج شنبه 22 فروردین 1392, 04:14 صبح
سلام


#include <QFile>
#include <QtSql>
#include <QDebug>
#include <QtWidgets>

bool createConnection(QSqlDatabase &db,
const QString &dbName = QString("mydb.db"))
{
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(dbName);

bool isDbFileExist = QFile::exists(dbName);

if (!db.open())
{
qDebug() << db.lastError().text();
return false;
}

if (!isDbFileExist)
{
QSqlQuery query(db);
query.exec("create table books (bookid int primary key, "
"author varchar(25), publisher varchar(25))");
query.exec("insert into books values(10, 'Ghomi', 'Nass')");
query.exec("insert into books values(11, 'Dr.Ghodsi', 'Naghoos')");
query.exec("insert into books values(12, 'Marty Matthews', 'Wrox')");
query.exec("insert into books values(13, 'John Cronan', 'McGraw-Hill')");
}

return true;
}

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

QSqlDatabase db;

if (!createConnection(db))
return -1;

//...

QSqlTableModel model(0, db);

model.setTable("books");
model.setEditStrategy(QSqlTableModel::OnFieldChang e);
model.select();

model.setHeaderData(0, Qt::Horizontal, "Book ID");
model.setHeaderData(1, Qt::Horizontal, "Author");
model.setHeaderData(2, Qt::Horizontal, "Publisher");

//...

QTableView *view = new QTableView();
view->setModel(&model);
view->resize(350, 200);
view->show();

//...

return app.exec();
}