qt-库存管理系统Qt+Mysql-2界面初始化和库存查询商品

1.绘制UI界面

UI界面暂时如图所示。

上面的tableWidget命名为:tableWidget_ListDataQueryResult,显示查询界面用。

下面的tableWidget命名为:tableWidget_ListData,显示所有数据用。

2.初始化表格

从数据库的 commoditydata 表中获取需要的数据,并将这些数据显示在 QTableWidget 控件 tableWidget_ListData 中

2.1 首先打开数据库,判断是否正常打开

    // 打开数据库
    if (!m_db.open()) {
        QMessageBox::critical(nullptr, "Database Open Failure", "Failed to open database: " + m_db.lastError().text());
        return;
    }

2.2 执行查询,查看指定表的列信息

    QSqlQuery query;
    query.exec("SHOW COLUMNS FROM commoditydata");

结果如下所示

### 使用 QT MySQL 实现库存管理系统的教程 #### 创建项目结构 为了创建一个基于 Qt 的应用程序并连接到 MySQL 数据库,首先需要设置开发环境。确保安装了 Qt 开发工具包以及相应的 MySQL 连接器。 ```cpp // main.cpp #include <QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } ``` #### 设计用户界面 使用 Qt Designer 或者直接编写 UI 文件定义图形化界面组件。对于库存管理系统而言,主要涉及商品列表展示、新增/编辑记录等功能模块的设计[^1]。 ```xml <!-- mainwindow.ui --> <widget class="QWidget" name="MainWindow"> <!-- 商品表格视图 --> <layout class="QVBoxLayout" > <item> <widget class="QTableView" name="tableView"/> </item> ... </layout> </widget> ``` #### 建立数据库连接 通过 `QSqlDatabase` 类建立与 MySQL 数据库之间的通信链路,在程序启动时初始化该链接,并验证其有效性。 ```cpp // databaseconnection.cpp bool DatabaseConnection::createConnection() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // 设置主机名 db.setDatabaseName("inventory_db"); // 设置数据库名称 db.setUserName("root"); // 用户名 db.setPassword(""); // 密码 if (!db.open()) { qDebug() << "Error: connection with database failed"; return false; } qDebug() << "Database: connection ok"; return true; } ``` #### 执行 SQL 查询操作 利用 `QSqlQueryModel` 来加载数据至 QTableView 控件中显示;也可以采用更灵活的方式如 `QSqlTableModel` 或自定义模型类来满足特定需求。 ```cpp // mainwindow.cpp void MainWindow::loadDataIntoTable() { model = new QSqlQueryModel(this); QString queryStr = "SELECT id, product_name, quantity FROM products;"; model->setQuery(queryStr); tableView.setModel(model); tableView.resizeColumnsToContents(); connect(tableView.selectionModel(), &QItemSelectionModel::currentChanged, this, &MainWindow::onRowSelected); } void MainWindow::onRowSelected(const QModelIndex& current) { int row = current.row(); QVariant productId = model->index(row, 0).data(); // 获取选中的产品ID qDebug() << "Selected Product ID:" << productId.toInt(); } ``` #### 添加新纪录功能 当用户点击按钮触发事件处理器函数后,收集输入框内的信息并通过 SQL 插入语句保存到数据库表里去。 ```cpp // mainwindow.cpp void MainWindow::on_pushButton_add_clicked(){ bool ok; QString productName = QInputDialog::getText( nullptr,"Add New Item","Enter the item's name:", QLineEdit::Normal,"",&ok); if(!ok || productName.isEmpty()) return ; int qty = QInputDialog::getInt(nullptr,"Quantity","How many items?",1,&ok); if(ok){ QSqlQuery qry; QString strInsert = "INSERT INTO products(product_name ,quantity ) VALUES (:name,:qty)"; qry.prepare(strInsert ); qry.bindValue(":name",productName ); qry.bindValue(":qty",qty ); if(qry.exec()){ loadDataIntoTable(); // 刷新表格内容 }else{ QMessageBox::critical(this,tr("Error"),qry.lastError().text()); } } } ``` 以上展示了如何运用 Qt 框架结合 MySQL 构建简单的库存管理系统的核心部分。实际应用可能还需要考虑更多细节,比如错误处理机制、权限控制等方面的内容[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值