C++ 如何在Qt中创建和加载SQLite?
我有一个包含数据的表(QTableWidget)。如何创建数据库SQLite并保存数据。那么我需要下次再次加载数据吗? 提前谢谢C++ 如何在Qt中创建和加载SQLite?,c++,database,qt,C++,Database,Qt,我有一个包含数据的表(QTableWidget)。如何创建数据库SQLite并保存数据。那么我需要下次再次加载数据吗? 提前谢谢 /*constructor ...*/ { ... /* create TableView to hold our db */ pcbtv = new QPcbView(this); pcbtv->setModel(tabsort); pcbtv->setAlternatingRowColors(true);
/*constructor ...*/
{
...
/* create TableView to hold our db */
pcbtv = new QPcbView(this);
pcbtv->setModel(tabsort);
pcbtv->setAlternatingRowColors(true);
pcbtv->setSortingEnabled(true);
pcbtv->setCornerButtonEnabled(false);
pcbtv->setSelectionMode(QAbstractItemView::SingleSelection);
pcbtv->setSelectionBehavior(QAbstractItemView::SelectRows);
pcbtv->setEditTriggers(QTableView::NoEditTriggers); /* start read-only */
pcbtv->resizeColumnsToContents();
/* Header titles must be set on the model */
pcbtv->model()->setHeaderData(PartNo_PartNo, Qt::Horizontal, "Part No");
pcbtv->model()->setHeaderData(PartNo_Name, Qt::Horizontal, "Name");
pcbtv->model()->setHeaderData(PartNo_GteNo, Qt::Horizontal, "GT-E Part No");
pcbtv->model()->setHeaderData(PartNo_GteName, Qt::Horizontal, "GT-Electronics Name");
QHeaderView* header = pcbtv->horizontalHeader();
//header->setToolTip("bliblabloo");
header->setAlternatingRowColors(true);
header->setSectionsMovable(true);
header->setStretchLastSection(true);
pcbtv->setHorizontalHeader(header);
...
}
void PcbList::loadDb(QString filepath)
{
openSqliteDb(filepath, "PARTNO");
}
void PcbList::openSqliteDb(QString dbname, QString table)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(dbname);
db.open();
qDebug() << "connected to db " << dbname;
tabmod = new QSqlTableModel(this, db);
tabmod->setTable(table);
tabmod->setSort(PartNo_GteNo, Qt::AscendingOrder);
tabmod->setEditStrategy(QSqlTableModel::OnFieldChange);
tabmod->select();
}
/*构造函数*/
{
...
/*创建TableView以保存数据库*/
pcbtv=新的QPcbView(本);
pcbtv->setModel(tabsort);
pcbtv->SetAlternatingRowColor(真);
pcbtv->setSortingEnabled(真);
pcbtv->setCornerButtonEnabled(假);
pcbtv->setSelectionMode(QAbstractItemView::SingleSelection);
pcbtv->setSelectionBehavior(QAbstractItemView::SelectRows);
pcbtv->setEditTriggers(QTableView::NoEditTriggers);/*只读启动*/
pcbtv->调整ColumnStoContents()的大小;
/*必须在模型上设置标题*/
pcbtv->model()->setHeaderData(零件号,Qt::水平,“零件号”);
pcbtv->model()->setHeaderData(零件号_名称,Qt::水平,“名称”);
pcbtv->model()->setHeaderData(零件号,Qt::水平,“GT-E零件号”);
pcbtv->model()->setHeaderData(零件号GteName,Qt::卧式,“GT电子设备名称”);
QHeaderView*header=pcbtv->horizontalHeader();
//标题->设置工具提示(“bliblabloo”);
标题->设置交替行颜色(真);
标题->设置分段移动(真);
收割台->setStretchLastSection(真);
pcbtv->setHorizontalHeader(标题);
...
}
void PcbList::loadDb(QString文件路径)
{
openSqliteDb(文件路径,“PARTNO”);
}
void PcbList::openSqliteDb(QString dbname,QString表)
{
QSqlDatabase db=QSqlDatabase::addDatabase(“QSQLITE”);
db.setDatabaseName(dbname);
db.open();
qDebug()设置排序(零件号GteNo,Qt::升序);
tabmod->setEditStrategy(QSqlTableModel::OnFieldChange);
tabmod->select();
}
要加载,请使用QSqlTableModel:或QSqlQueryModel抱歉,忘了提及。QPcbView实际上只是一个QTableView,它具有我的特定应用程序所需的一些附加功能。您应该能够用QTableView替换它。