行业知识
Qt SQLite的创建和使用
2026-10-19 05:19:00
来源:互联网转载
���点:
1.SQLite创建数据库内容方法
链接:SQLite Expert Personal的简单使用-CSDN博客
2.和数据库进行链接方法
QSqlDatabase DB;//数据库连接bool MainWindow::openDatabase(QString aFile){ DB=QSqlDatabase::addDatabase("QSQLITE");//添加 SQLITE数据库驱动 DB.setDatabaseName(aFile);//设置数据库名称 if (!DB.open()) //打开数据库失败 return false; else { openTable();//打开数据表 return true; }} 3.QTableView和QSqltableModedl、QItemSelectionModel关系
/打开数据表void MainWindow::openTable(){ //1. 创建数据模型,打开数据表 tabModel=new QSqlTableModel(this,DB);//数据模型 tabModel->setTable("employee");//设置数据表 tabModel->setEditStrategy(QSqlTableModel::OnManualSubmit);//数据保存方式,OnManualSubmit , OnRowChange tabModel->setSort(tabModel->fieldIndex("empNo"),Qt::AscendingOrder); //排序 if (!(tabModel->select()))//查询数据失败 { QMessageBox::critical(this, "错误信息", "打开数据表错误,错误信息:\n"+tabModel->lastError().text()); return; } showRecordCount(); //显示记录条数 //2. 设置字段显示标题 tabModel->setHeaderData(tabModel->fieldIndex("empNo"), Qt::Horizontal, "工号"); tabModel->setHeaderData(tabModel->fieldIndex("Name"), Qt::Horizontal, "姓名"); tabModel->setHeaderData(tabModel->fieldIndex("Gender"), Qt::Horizontal, "性别"); tabModel->setHeaderData(tabModel->fieldIndex("Birthday"), Qt::Horizontal, "出生日期"); tabModel->setHeaderData(tabModel->fieldIndex("Province"), Qt::Horizontal, "省份"); tabModel->setHeaderData(tabModel->fieldIndex("Department"), Qt::Horizontal, "部门"); tabModel->setHeaderData(tabModel->fieldIndex("Salary"), Qt::Horizontal, "工资"); //这两个字段不在tableView中显示 tabModel->setHeaderData(tabModel->fieldIndex("Memo"),Qt::Horizontal,"备注"); tabModel->setHeaderData(tabModel->fieldIndex("Photo"),Qt::Horizontal,"照片"); //3. 创建选择模型 selModel=new QItemSelectionModel(tabModel,this);//关联选择模型 //当前行或列变化时发射currentChanged信号 connect(selModel,&QItemSelectionModel::currentChanged, this,&MainWindow::do_currentChanged); //当前行变化时发射currentRowChanged()信号 connect(selModel,&QItemSelectionModel::currentRowChanged, this,&MainWindow::do_currentRowChanged); //4. Model/View结构 ui->tableView->setModel(tabModel);//设置数据模型 ui->tableView->setSelectionModel(selModel); //设置选择模型 ui->tableView->setColumnHidden(tabModel->fieldIndex("Memo"),true);//隐藏列 ui->tableView->setColumnHidden(tabModel->fieldIndex("Photo"),true);//隐藏列 //5. 为tableView中的“性别”和“部门”两个字段设置自定义代理组件 QStringList strList; strListaddMapping(ui->dbEditName,tabModel->fieldIndex("Name")); dataMapper->addMapping(ui->dbComboSex,tabModel->fieldIndex("Gender")); dataMapper->addMapping(ui->dbEditBirth,tabModel->fieldIndex("Birthday")); dataMapper->addMapping(ui->dbComboProvince,tabModel->fieldIndex("Province")); dataMapper->addMapping(ui->dbComboDep,tabModel->fieldIndex("Department")); dataMapper->addMapping(ui->dbSpinSalary,tabModel->fieldIndex("Salary")); dataMapper->addMapping(ui->dbEditMemo,tabModel->fieldIndex("Memo")); dataMapper->toFirst(); //移动到首记录 //7. 获取字段名称列表,填充groupBoxSort getFieldNames(); //8.更新actions和界面组件的使能状态 ui->actOpenDB->setEnabled(false);//不能再打开数据库 ui->actRecAppend->setEnabled(true); ui->actRecInsert->setEnabled(true); ui->actRecDelete->setEnabled(true); ui->actScan->setEnabled(true); ui->groupBoxSort->setEnabled(true);//"排序"分租框 ui->groupBoxFilter->setEnabled(true);//"数据过滤"分组框}
上一篇:天津市楼盘备案查询系统