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

安顺网站开发公司行业网站建设

安顺网站开发公司,行业网站建设,视频网站cms系统,wild合成版是哪个网站做的一、前言 在之前那篇讲如何使用QT连接数据库时#xff08;QT C实践|超详细数据库的连接和增删改查操作|附源码)#xff0c;做了一个简单的对数据库进行增删改查的界面(如下#xff09;。 但是存在一个问题就是#xff1a;这个界面只是对一张表进行操作#xff0c;但是我…一、前言 在之前那篇讲如何使用QT连接数据库时QT C实践|超详细数据库的连接和增删改查操作|附源码)做了一个简单的对数据库进行增删改查的界面(如下。 但是存在一个问题就是这个界面只是对一张表进行操作但是我们知道一般数据库中都不止一张表如果这个界面能够自由选择数据库中的表进行展示和对其进行操作岂不更好 接下来我们就讲一下如何基于上篇基础的对数据库中的表进行显示和操作升级为可以自由选择数据库中的表对其展示和操作 二、思路 在UI界面添加一个QComboBox下拉框控件到页面其中列出想要进行操作的数据库表名连接这个QComboBox下拉框控件和currentIndexChanged信号到一个槽函数在这个槽函数中更改当前模型的表名当用户从下拉列表中选择一个表时更新QSqlTableModel以反映所选表的数据。 三、源码 connection.h #ifndef CONNECTION_H #define CONNECTION_H#include QMessageBox #include QSqlDatabase #include QSqlQuery #include QDebug #pragma execution_character_set(utf-8); static bool createConnection() {//连接第一个数据库//QMYSQLQSqlDatabase db QSqlDatabase::addDatabase(QODBC, connection1);//需要使用的数据库驱动和联检建立的名称方便建立多个数据库连接【使用不同的数据库时】区分db.setHostName(127.0.0.1);//连接地址db.setUserName(root);//数据库账户db.setPassword(55667788);//密码db.setPort(3306);//端口//test.dbdb.setDatabaseName(windProject);//需要用到的数据库(ODBC中设置的名称if (!db.open()) {//如果数据库连接失败则弹出//critical(QWidget *parent, const QString title,//const QString text,//QMessageBox::StandardButtons buttons Ok,//QMessageBox::StandardButton defaultButton NoButton)QMessageBox::critical(0, Cannot open database,Unable to establish a database connection, QMessageBox::Cancel);return false;}else {QMessageBox::information(NULL, infor, link success);} // //下面来创建表 // //如果MySQL数据库中已经存在同名的表则下面代码不会执行 // QSqlQuery query2(db); // // // // qDebug() connection2:; 创建表并插入值 // query2.exec(CREATE TABLE Construction ( // id INT PRIMARY KEY, // ConstructionDate DATE, // ConstructionLocation VARCHAR(255), // WindTurbineModel VARCHAR(255))); }#endif // CONNECTION_H界面类Admin Admin.h: #pragma once#include QMainWindow #include ui_Admin.h #include QSqlTableModel #include QSqlDatabase#pragma execution_character_set(utf-8); class Admin : public QMainWindow {Q_OBJECTpublic:Admin(QWidget *parent nullptr);~Admin();//有关数据库操作的两个成员变量QSqlTableModel* model;//创建对象指针QSqlDatabase db;private:Ui::AdminClass ui;private slots:void on_add_clicked();void on_modify_clicked();void on_del_clicked();void on_rollback_clicked();void on_show_all_clicked(); }; Admin.cpp #include Admin.h #include qmessagebox.h #include QSqlDatabase #include QMessageBox #include qsqlerror.h #include connection.h #include QSqlTableModelAdmin::Admin(QWidget* parent): QMainWindow(parent) {ui.setupUi(this);if (!createConnection()) {return;}db QSqlDatabase::database(connection1);model new QSqlTableModel(this, db);//由于在窗口的类中创建对象因此实例化对象时使用this指针指向操作函数的指针作为父对象// 假设您有一个QStringList来存放表名QStringList tableList { 用户信息, 工地信息, 风电塔筒信息 ,层级信息}; // 这里填入您的表名ui.comboBox-addItems(tableList);//显示on_show_all_clicked();//当下拉框中的数据库的表的选项发生变换时显示对应的表connect(ui.comboBox, SIGNAL(currentIndexChanged(const QString)), this, SLOT(on_show_all_clicked()));//设置编辑策略model-setEditStrategy(QSqlTableModel::OnManualSubmit);//对所有模型改变立即用到数据库ui.tableView-setModel(model); }Admin::~Admin() {if (db.isOpen()) {db.close();}// 然后从连接池中移除该连接QSqlDatabase::removeDatabase(connection1); }// 添加记录按钮 void Admin::on_add_clicked() {// 获得表的行数int rowNum model-rowCount();int id 10;// 添加一行model-insertRow(rowNum);model-setData(model-index(rowNum, 0), id);// 可以直接提交//model-submitAll(); }// 删除选中行按钮 void Admin::on_del_clicked() {// 获取选中的行int curRow ui.tableView-currentIndex().row();// 删除该行model-removeRow(curRow);int ok QMessageBox::warning(this, tr(删除当前行!),tr(你确定删除当前行吗), QMessageBox::Yes, QMessageBox::No);if (ok QMessageBox::No){ // 如果不删除则撤销model-revertAll();}else { // 否则提交在数据库中删除该行model-submitAll();}} // 撤销修改按钮 void Admin::on_rollback_clicked() {model-revertAll(); }// 提交修改按钮 void Admin::on_modify_clicked() {// 开始事务操作model-database().transaction();if (model-submitAll()) {if (model-database().commit()) // 提交QMessageBox::information(this, tr(tableModel),tr(数据修改成功));}else {model-database().rollback(); // 回滚QMessageBox::warning(this, tr(tableModel),tr(数据库错误: %1).arg(model-lastError().text()),QMessageBox::Ok);} } // 显示全表按钮 void Admin::on_show_all_clicked() {QString selectedTable (ui.comboBox)-currentText();if (selectedTable 用户信息) {selectedTable user;}else if (selectedTable 工地信息) {selectedTable buildingsite;}else if (selectedTable 风电塔筒信息) {selectedTable windtower;}else if (selectedTable 层级信息) {selectedTable floor;}// 首先更改表和加载数据model-setTable(selectedTable);model-select();// 然后设置列标题if (selectedTable user) {// 设置显示名称从0开始计数model-setHeaderData(0, Qt::Horizontal, tr(用户ID));model-setHeaderData(1, Qt::Horizontal, tr(用户名称));model-setHeaderData(2, Qt::Horizontal, tr(用户密码));model-setHeaderData(3, Qt::Horizontal, tr(用户角色1管理员; 0普通用户));}else if (selectedTable buildingsite) {// 设置显示名称从0开始计数model-setHeaderData(0, Qt::Horizontal, tr(工地ID));model-setHeaderData(1, Qt::Horizontal, tr(工地名称));}else if (selectedTable windtower) {// 设置显示名称从0开始计数model-setHeaderData(0, Qt::Horizontal, tr(塔筒ID));model-setHeaderData(1, Qt::Horizontal, tr(所属工地ID));model-setHeaderData(2, Qt::Horizontal, tr(塔筒层数));}else if(selectedTable floor) {model-setHeaderData(0, Qt::Horizontal, tr(层级ID));model-setHeaderData(1, Qt::Horizontal, tr(所属塔筒ID));model-setHeaderData(2, Qt::Horizontal, tr(实际螺母个数));model-setHeaderData(3, Qt::Horizontal, tr(检测螺母个数));}(ui.tableView)-setModel(model); } 四、效果展示 有下拉框显示数据库中的不同表 选择对应表随即发生改变
http://www.pierceye.com/news/962189/

相关文章:

  • 实用网站设计步骤百度竞价广告代理
  • 怎么在vk网站上做推广网站建设柚子网络科技官网
  • 威海网站优化公司wordpress post title
  • 网站建设验收期安阳后营吧
  • 询盘网站培训机构前端开发
  • 企业如何做网站建站小程序定制开发深圳
  • 创建网站怎么赚钱的视频博客主题wordpress
  • 北京大兴区网站建设如何打造平台
  • 建设公司网站需要多少天棋盘游戏类网站开发
  • 织梦网站logo修改探测器 东莞网站建设
  • 图片网站收录淮北网站建设求职简历
  • 北京建设局投诉网站首页晋江外贸网站建设
  • 如何更改网站模板网站建设这一行业怎样
  • 海口网站排名东网站建设
  • 李连杰做的功夫网站泉州四方网站开发
  • 台州专业网站设计系统简单的购物网站制作
  • 中国建筑信息资讯网网站的优化用什么软件
  • wordpress本地网站打开慢电商网课
  • 仿照别人的网站做违法吗江苏集团网站建设
  • 一家专门做建材的网站找人做个网站大概多少钱
  • 信息展示网站系统网站策划书怎么写
  • 吉木萨尔县建设局网站岳阳网站推广
  • 九宫格网站模板本机网站环境搭建
  • 自学网站建设 难吗企业网站制作公司合肥
  • 网站建设的网页怎么做餐饮装修公司推荐
  • 网站页面是自己做还是使用模板惠州seo外包费用
  • 深圳专业网站建设技术郑州网络推广平台有哪些
  • 网站建设的费用预算怎么查自己名下有没有注册公司
  • 深圳医院网站建设网站产品页模板
  • 文化馆网站建设做直播的网站有哪些