当前位置: 首页 > news >正文

好多职业培训网站是怎么做的桂林工程建设信息网站

好多职业培训网站是怎么做的,桂林工程建设信息网站,石景山区网站建设,建设部官网网站QSqlQueryModel 功能概述 QSqlQueryModel 是 QSqlTableModel 的父类。QSqlQueryModel 封装了执行 SELECT 语句从数据库查询数据的功能#xff0c;但是 QSqlQueryModel 只能作为只读数据源使用#xff0c;不可以编辑数据。QSqlQueryModel 类的主要函数如下#xff1a; 接口…QSqlQueryModel 功能概述 QSqlQueryModel 是 QSqlTableModel 的父类。QSqlQueryModel 封装了执行 SELECT 语句从数据库查询数据的功能但是 QSqlQueryModel 只能作为只读数据源使用不可以编辑数据。QSqlQueryModel 类的主要函数如下 接口函数功能描述void clear()清除数据模型释放所有获得的数据QSqlError lastError()返回上次的错误可以获取错误的类型和文本信息QSqlQuery query()返回当前关联的 QSqlQuery 对象void setQuery(QSqlQuery query)设置一个 QSqlQuery 对象获取数据void setQuery(QString query)设置一个 SELECT 语句创建查询获取数据QSqlRecord record()返回一个空记录包含当前查询的字段信息QSqlRecord record(int row)返回行号为 row 的记录int rowCount()返回查询到的记录条数int columnCount()返回查询的字段个数void setHeaderData(int section, Qt::Orientation orientation, QVariant value)设置表头数据一般用于设置字段的表头标题 使用 QSqlQueryModel 作为数据模型从数据库查询数据只需要使用 setQuery() 函数设置一个 SELECT 查询语句即可。QSqlQueryModel 可以作为 QTableView 等视图组件的数据源也可以使用 QDataWidgetMapper 创建字段与界面组件的映射只是查询出来的数据是不可编辑的。 使用 QSqlQueryModel 实现数据查询 实例功能 使用 QSqlQueryModel 可以从一个数据表或多个数据表里查询数据只要设计好 SELECT 语句即可。由于 QSqlQueryModel 读出的数据是只读的所以没有编辑保存等功能主窗口定义如下 class MainWindow : public QMainWindow {Q_OBJECTprivate:QLabel *LabInfo;QSqlDatabase DB; //数据库QSqlQueryModel *qryModel; //数据模型QItemSelectionModel *theSelection; //选择模型QDataWidgetMapper *dataMapper;//数据界面映射void openTable();//打开数据表void refreshTableView();//移动记录时刷新TableView的当前行 public:explicit MainWindow(QWidget *parent 0);~MainWindow();private slots:// QTableView的SelectionModel的行发生了变化进行处理void on_currentRowChanged(const QModelIndex current, const QModelIndex previous); ///void on_actOpenDB_triggered();void on_actRecFirst_triggered();void on_actRecPrevious_triggered();void on_actRecNext_triggered();void on_actRecLast_triggered();private:Ui::MainWindow *ui; };这里定义了 QSqlQueryModel 类型的数据模型变量 qryModel也定义了数据库、选择模型和数据界面映射的变量。refreshTableView() 函数用于记录移动后刷新 TableView 上的当前行位置。自定义槽函数 on_currentRowChanged() 在选择模型的当前变化时处理 Photo 字段的查询与照片显示。 打开数据库 openTable() 用于查询数据简历界面显示等具体操作代码如下 void MainWindow::openTable() {//打开数据表qryModelnew QSqlQueryModel(this);qryModel-setQuery(SELECT empNo, Name, Gender, Height, Birthday, Mobile, Province, City, Department, Education, Salary FROM employee ORDER BY empNo);if (qryModel-lastError().isValid()){QMessageBox::critical(this, 错误, 数据表查询错误,错误信息\nqryModel-lastError().text(),QMessageBox::Ok,QMessageBox::NoButton);return;}LabInfo-setText(QString::asprintf(记录条数%d,qryModel-rowCount()));qryModel-setHeaderData(0,Qt::Horizontal,工号);qryModel-setHeaderData(1,Qt::Horizontal,姓名);qryModel-setHeaderData(2,Qt::Horizontal,性别);qryModel-setHeaderData(3,Qt::Horizontal,身高);qryModel-setHeaderData(4,Qt::Horizontal,出生日期);qryModel-setHeaderData(5,Qt::Horizontal,手机);qryModel-setHeaderData(6,Qt::Horizontal,省份);qryModel-setHeaderData(7,Qt::Horizontal,城市);qryModel-setHeaderData(8,Qt::Horizontal,部门);qryModel-setHeaderData(9,Qt::Horizontal,学历);qryModel-setHeaderData(10,Qt::Horizontal,工资);theSelectionnew QItemSelectionModel(qryModel);//选择行变化时connect(theSelection,SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),this,SLOT(on_currentRowChanged(QModelIndex,QModelIndex)));ui-tableView-setModel(qryModel);ui-tableView-setSelectionModel(theSelection); // ui-tableView-resizeColumnsToContents(); // ui-tableView-horizontalHeader()-setStretchLastSection(true);//创建数据映射dataMapper new QDataWidgetMapper();dataMapper-setSubmitPolicy(QDataWidgetMapper::AutoSubmit);dataMapper-setModel(qryModel);dataMapper-addMapping(ui-dbSpinEmpNo,0);//empNo;dataMapper-addMapping(ui-dbEditName,1);//Name;dataMapper-addMapping(ui-dbComboSex,2);//Gender;dataMapper-addMapping(ui-dbSpinHeight,3);//Height;dataMapper-addMapping(ui-dbEditBirth,4);//Birthday;dataMapper-addMapping(ui-dbEditMobile,5);//Mobile;dataMapper-addMapping(ui-dbComboProvince,6);//Province;dataMapper-addMapping(ui-dbEditCity,7);//City;dataMapper-addMapping(ui-dbComboDep,8);//Department;dataMapper-addMapping(ui-dbComboEdu,9);//Education;dataMapper-addMapping(ui-dbSpinSalary,10);//Salary;dataMapper-toFirst();ui-actOpenDB-setEnabled(false); }程序首先创建了 QSqlQueryModel 类型的私有变量 qryModel然后调用 setQuery() 函数设置了 SELECT 查询语句SELECT 语句从 employee 表里查询除了 Memo 和 Photo 之外的所有其他字段。使用 setHeadData() 函数为每个字段设置显示标题为了代码简化这里直接使用字段的序号。 为 qryModel 创建了选择模型 theSelection并将其 currentRowChanged() 信号和自定义槽函数关联查询出数据显示在界面上槽函数代码如下 void MainWindow::on_currentRowChanged(const QModelIndex current, const QModelIndex previous) {Q_UNUSED(previous);if (!current.isValid()){ui-dbLabPhoto-clear();return;}dataMapper-setCurrentModelIndex(current);bool first(current.row()0); //是否首记录bool last(current.row()qryModel-rowCount()-1);//是否尾记录ui-actRecFirst-setEnabled(!first); //更新使能状态ui-actRecPrevious-setEnabled(!first);ui-actRecNext-setEnabled(!last);ui-actRecLast-setEnabled(!last);int curRecNotheSelection-currentIndex().row();QSqlRecord curRecqryModel-record(curRecNo); //获取当前记录int empNocurRec.value(EmpNo).toInt();QSqlQuery query; //查询当前empNo的Memo和Photo字段的数据query.prepare(select EmpNo, Memo, Photo from employee where EmpNo :ID);query.bindValue(:ID,empNo);query.exec();query.first();QVariant vaquery.value(Photo);//if (!va.isValid()) //图片字段内容为空ui-dbLabPhoto-clear();else{//显示照片QByteArray datava.toByteArray();QPixmap pic;pic.loadFromData(data);ui-dbLabPhoto-setPixmap(pic.scaledToWidth(ui-dbLabPhoto-size().width()));}QVariant va2query.value(Memo);//显示备注ui-dbEditMemo-setPlainText(va2.toString()); }记录移动 用于数据映射的 QDataWidgetMapper 类设置数据模型后总是指向数据模型的当前记录。QDataWidgetMapper 有四个函数进行当前记录移动分别是 toFirst() 、toLast()、toNext() 和 toPrevious()。当前记录移动时会引起数据模型关联的选择模型发射 currentRowChanged() 信号触发槽函数。工具栏的四个移动按钮代码如下 void MainWindow::on_actRecFirst_triggered() { //首记录dataMapper-toFirst();refreshTableView(); }void MainWindow::on_actRecPrevious_triggered() { //前一条记录dataMapper-toPrevious();refreshTableView(); }void MainWindow::on_actRecNext_triggered() {//后一条记录dataMapper-toNext();refreshTableView(); }void MainWindow::on_actRecLast_triggered() {//最后一条记录dataMapper-toLast();refreshTableView(); }参考资料https://github.com/0voice
http://www.w-s-a.com/news/933957/

相关文章:

  • 网站开发技术方案模板无锡网站建设推荐
  • 自助建站系统注册三维家3d设计软件免费
  • 做seo网站标题重要吗郑州众诚建设监理有限公司网站
  • 建设网站南沙区百度关键词推广怎么做
  • 网站建设公司做销售前景好不好石家庄外贸网站制作
  • windows2008做网站网站首页打开速度
  • 做外贸要做什么网站服装设计图
  • 中山市路桥建设有限公司网站网站开发角色分配权限
  • 加强档案网站建设网站搭建好了不用会不会被攻击
  • 维护网站信息网络建设服务
  • 网站建设策划书模板下载用自己电脑配置服务器做网站
  • 360免费建站空间淘宝数据网站开发
  • 做分销的网站本地dede网站怎么上线
  • 中学网站模板北京管理咨询公司
  • 网站开发用哪个软件方便二级网站建设 管理思路
  • 个人怎么创建网站中国建设银行网站口
  • 跟知乎一样的网站做展示网站步骤
  • 邯郸网站建设效果好wordpress app 加载慢
  • 做app的网站有哪些功能广州自适应网站建设
  • 兰州建设网站的网站开源网站建设
  • 深圳网站建设南山指数基金是什么意思
  • 备案中又需要建设网站网站信息组织优化
  • 做网站推广需要什么asp响应式h5网站源码下载
  • 柳州建设网官方网站免费自助建站哪个平台好
  • 论坛网站模板源码下载网站建设与网页设计是什么
  • 跑流量的网站淘宝网站的建设目标是
  • 网站计费系统怎么做九一制作网站
  • 网红营销推广温州seo博客
  • 临沂网站制作定制现在比较流行的软件开发模型
  • 南宁企业建站系统做问卷调查哪个网站好