QT 商品删除与导出数据(库存管理系统)

商品删除

cpp 复制代码
void MainWidget::on_pushButton_DeleteGoods_clicked()
{
    // 1:首先:提醒用户是否确认删除此记录
    // 1:获取QMessageBox选择按钮:Yes 或 No
    int iClick=QMessageBox::warning(this,"警告","警告:删除操作是根据商品编号进行删除,请确认是否安全?",QMessageBox::Yes|QMessageBox::No);

    // 2:判断用户是否单击Yes按钮
    if(iClick==QMessageBox::Yes)
    {
        // 3:获取当前选择行进行删除:商品记录数据
        int iRow=ui->tableWidget_ListData->currentRow();

        // 4:根据index(行,列)获取对应商品编号
        QString strValue=ui->tableWidget_ListData->model()->index(iRow,0).data().toString();
        // QMessageBox::information(this,"测试","获取数据为:"+strValue);

        QSqlQuery result;
        QString strid=strValue;

        // 5:判断删除商品编号是否为空???
        if(strid==NULL)
        {
            QMessageBox::critical(this,"错误","提示:请选择要删除商品编号,请重新检查?");
            return;
        }


        // 6:实现删除
        QString sqlquery=QString("delete from commoditydatatable where StockId = %1").arg(strid);
        if(result.exec(sqlquery))
        {
            // 删除提示
            QMessageBox::information(this,"提示","删除商品记录成功!");

            // 清空表格控件数据
            ui->tableWidget_ListData->clear();

            // 设置表格控件标题(表头)
            ui->tableWidget_ListData->setHorizontalHeaderLabels(QStringList()<<"编号"<<"名称"<<"数量"<<"单价"<<"供应商家"<<"负责人"<<"入库时间"<<"出库时间"<<"备注");

            // 调用函数将数据表中数据再次展示到表格控件当中
            InitTableWidgetFunc();
        }

    }
    else
    {
        return;
    }
}

导出数据为excel

cpp 复制代码
// 导出数据
#include <QFileDialog>
#include <QAxObject>
#include <QDesktopServices>

// 该函数功能:导出表格控件数据,直接生成Excel文件保存
void MainWidget::on_pushButton_LoadData_clicked()
{
    // 保存文件扩展名为:.xls
    QDateTime time;
    QString strTemp;

    // 1:获取当前系统当时作为文件名称进行保存
    time=QDateTime::currentDateTime();
    strTemp=time.toString("yyyy-MM-dd-hhmmss");
    // QMessageBox::information(this,"测试",strTemp);

    // 2:应用文件对话框来保存要导出文件名称(设置保存的文件名称)及数据信息
    QString strFileName=QFileDialog::getSaveFileName(this,tr("Excel Files"),QString("./%1%2.xls").arg(strTemp).arg("_kcgl"),tr("Excel Files(*.xls)"));
    // QMessageBox::information(this,"测试",strFileName);

    // 3:处理工作簿
    if(strFileName!=NULL)
    {
        QAxObject *excel=new QAxObject;
        if(excel->setControl("Excel.Application"));
        {
            excel->dynamicCall("SetVisible (bool Visible)",false);
            excel->setProperty("DisplayAlerts",false);

            QAxObject *workbooks=excel->querySubObject("WorkBooks"); // 获得工作簿集合
            workbooks->dynamicCall("Add"); // 创建一个工作簿
            QAxObject *workbook=excel->querySubObject("ActiveWorkBook"); // 获得当前工作簿
            QAxObject *worksheet=workbook->querySubObject("Worksheets(int)",1);
            QAxObject *cell;

            // 1:添加Excel文件表头数据
            for(int i=1;i<=ui->tableWidget_ListData->columnCount();i++)
            {
                cell=worksheet->querySubObject("Cells(int,int)",1,i);
                cell->setProperty("RowHeight",25);
                cell->dynamicCall("SetValue(const QString&)",ui->tableWidget_ListData->horizontalHeaderItem(i-1)->data(0).toString());
            }

            // 2:将表格数据保存到Excel文件当中
            for(int j=2;j<=ui->tableWidget_ListData->rowCount()+1;j++)
            {
                for(int k=1;k<=ui->tableWidget_ListData->columnCount();k++)
                {
                    cell=worksheet->querySubObject("Cells(int,int)",j,k);
                    cell->dynamicCall("SetValue(const QString&",ui->tableWidget_ListData->item(j-2,k-1)->text()+"\t");

                }
            }

            // 3:将刚才创建的Excel文件直接保存到指定的目录下
            workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(strFileName)); // 保存到strFileName
            workbook->dynamicCall("Close()");
            excel->dynamicCall("Quit()");
            delete excel;
            excel=NULL;
        }
    }
}
相关推荐
魔力女仆17 小时前
分享一个 JS 鼠标跟随贪吃蛇背景库
开发语言·javascript·计算机外设
2401_8949155318 小时前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程
开发语言·python·tcp/ip·算法·unity
麻瓜老宋18 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十二步,分号赋值链式修复、TOKEN_ASSIGN
c语言·开发语言·atomcode
颜x小20 小时前
[C#] C++与c#语法对比
开发语言·c++·c#
weixin_4236521320 小时前
C#使用JObject
开发语言·c#
国科安芯20 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
霸道流氓气质1 天前
Java中集成Smile 技术教程:从入门到工程实践
java·开发语言
BerrySen1781 天前
迈向 Next-Gen Java:企业级高并发架构演进与大模型 Agent 落地深度实战
java·开发语言·架构
用户8402409736081 天前
使用 PyQt5 打造功能完备的 PDF 编辑器:从设计到实现全解析
qt
Nebula_g1 天前
Java实现本地Socket通信(三)
java·开发语言·学习·socket·可视化