Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Qt中创建和加载SQLite?_C++_Database_Qt - Fatal编程技术网

C++ 如何在Qt中创建和加载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);

我有一个包含数据的表(QTableWidget)。如何创建数据库SQLite并保存数据。那么我需要下次再次加载数据吗? 提前谢谢

/*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替换它。