[嵌入式Linux项目实战开发]基于QT4.8的仓库管理系统实现功能【2019年给力项目】

支持导出 excel 表格
支持查看商品操作日志
支持高精度浮点运算
支持同一商品以不同价格入库
该软件已开源。
因预览版 可执行文件过大,所以上传到csdn
大家有问题,可以加我的QQ1653687969

源码目录结构:

源码目录结构:

部分代码:

ContentWidget::ContentWidget(QWidget *parent) :QWidget(parent){sql_x = -1;sql_y = -1;tab_page = true;search_page = false;if(!sqlInit(false)){QMessageBox message(QMessageBox::NoIcon, "提示", "请先选中一件库存商品");message.setIconPixmap(QPixmap(":/img/safe"));message.exec();return;}//    configure = new Configure;//    configure->readconfigure();excelengine = new ExcelEngine;QThread* daemon_thread = new QThread;excelengine->moveToThread(daemon_thread);daemon_thread->start(QThread::IdlePriority);//    connect(this, SIGNAL(saveExecl(QMap<int,QTableWidget *>)),excelengine, SIGNAL(signals_saveExecl(QMap<int,QTableWidget *>)));//    saveExecl(product_table);main_widget = new QWidget(this);storage_table = new QTableWidget(this);product_table = new QTableWidget(this);gmpmath = new GmpMath;setToolsWidget();setProductTab();setStorageTab();setTabWidget();tabShow();QPalette palette;tools_widget->setAutoFillBackground(true);main_widget->setAutoFillBackground(true);palette.setColor(QPalette::Background,QColor(155,225,123));tools_widget->setPalette(palette);tools_widget->setFixedHeight(75);main_splitter = new QSplitter(this);main_splitter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);main_splitter->setOrientation(Qt::Vertical);main_splitter->setHandleWidth(0);main_splitter->setStyleSheet("QSplitter::handle{background:lightgray;}");main_splitter->addWidget(tools_widget);//    main_splitter->addWidget(left_widget);main_splitter->addWidget(main_widget);for(int i = 0; i<main_splitter->count();i++){QSplitterHandle *handle = main_splitter->handle(i);handle->setEnabled(false);}qDebug() << "content_ widget ok";QHBoxLayout *main_layout = new QHBoxLayout();main_layout->addWidget(main_splitter);main_layout->setSpacing(0);main_layout->setContentsMargins(0, 0, 0, 0);connect(btn_add, SIGNAL(clicked()),this, SLOT(addwidget()));connect(btn_minus, SIGNAL(clicked()),this, SLOT(minuswidget()));connect(btn_plus, SIGNAL(clicked()),this, SLOT(pluswidget()));connect(btn_delete, SIGNAL(clicked()),this, SLOT(sqldelete()));connect(btn_cancel, SIGNAL(clicked()),this, SLOT(sqlcancel()));connect(btn_outinto, SIGNAL(clicked()),this, SLOT(saveas()));setLayout(main_layout);//    slotStyleChange(0);btnEnable(false);}

现在跟大家介绍一下软件实现界面:
初始化数据库

主界面

#include "main_menu.h"MainMenu::MainMenu(QWidget *widget): QMenu(widget)
{this->createActions();this->translateActions();
}void MainMenu::createActions()
{//创建菜单项action_sqlinit = new QAction(this);action_changepasswd = new QAction(this);action_sqlinit->setIcon(QIcon("img/safe.png"));//添加菜单项this->addAction(action_sqlinit);this->addAction(action_changepasswd);//设置信号连接QObject::connect(action_sqlinit, SIGNAL(triggered()), this, SIGNAL(sqlinit_signal()));QObject::connect(action_changepasswd, SIGNAL(triggered()), this, SIGNAL(changepasswd_signal()));
}void MainMenu::translateActions()
{action_sqlinit->setText(tr("初始化数据库"));action_changepasswd->setText(tr("修改管理员密码"));
}

入库

出库

搜索商品

商品操作详情

删除商品

导出excel 表格

#include "excelengine.h"ExcelEngine::ExcelEngine(QObject *parent) :QObject(parent)
{pExcel     = NULL;pWorkbooks = NULL;pWorkbook  = NULL;pWorksheet = NULL;sXlsFile     = "";nRowCount    = 0;nColumnCount = 0;nStartRow    = 0;nStartColumn = 0;bIsOpen     = false;bIsValid    = false;bIsANewFile = false;bIsSaveAlready = false;HRESULT r = OleInitialize(0);if (r != S_OK && r != S_FALSE){qDebug("Qt: Could not initialize OLE (error %x)", (unsigned int)r);}
//    connect(this, SIGNAL(signals_saveExecl(QMap<int,QTableWidget *>)),this, SLOT(saveExecl(QMap<int,QTableWidget *>)));
}ExcelEngine::ExcelEngine(QString xlsFile)
{pExcel     = NULL;pWorkbooks = NULL;pWorkbook  = NULL;pWorksheet = NULL;sXlsFile     = xlsFile;nRowCount    = 0;nColumnCount = 0;nStartRow    = 0;nStartColumn = 0;bIsOpen     = false;bIsValid    = false;bIsANewFile = false;bIsSaveAlready = false;HRESULT r = OleInitialize(0);if (r != S_OK && r != S_FALSE){qDebug("Qt: Could not initialize OLE (error %x)", (unsigned int)r);}
}ExcelEngine::~ExcelEngine()
{if ( bIsOpen ){//析构前,先保存数据,然后关闭workbookClose();}OleUninitialize();
}/***@brief 打开sXlsFile指定的excel报表*@return true : 打开成功*        false: 打开失败*/
bool ExcelEngine::Open(UINT nSheet, bool visible)
{if ( bIsOpen ){//return bIsOpen;Close();}nCurrSheet = nSheet;bIsVisible = visible;if ( NULL == pExcel ){pExcel = new QAxObject("Excel.Application");if ( pExcel ){bIsValid = true;}else{bIsValid = false;bIsOpen  = false;return bIsOpen;}pExcel->dynamicCall("SetVisible(bool)", bIsVisible);}if ( !bIsValid ){bIsOpen  = false;return bIsOpen;}if ( sXlsFile.isEmpty() ){bIsOpen  = false;return bIsOpen;}/*如果指向的文件不存在,则需要新建一个*/QFile f(sXlsFile);if (!f.exists()){bIsANewFile = true;}else{bIsANewFile = false;}if (!bIsANewFile){pWorkbooks = pExcel->querySubObject("WorkBooks"); //获取工作簿pWorkbook = pWorkbooks->querySubObject("Open(QString, QVariant)",sXlsFile,QVariant(0)); //打开xls对应的工作簿}else{pWorkbooks = pExcel->querySubObject("WorkBooks");     //获取工作簿pWorkbooks->dynamicCall("Add");                       //添加一个新的工作薄pWorkbook  = pExcel->querySubObject("ActiveWorkBook"); //新建一个xls}pWorksheet = pWorkbook->querySubObject("WorkSheets(int)", nCurrSheet);//打开第一个sheet//至此已打开,开始获取相应属性QAxObject *usedrange = pWorksheet->querySubObject("UsedRange");//获取该sheet的使用范围对象QAxObject *rows = usedrange->querySubObject("Rows");QAxObject *columns = usedrange->querySubObject("Columns");//因为excel可以从任意行列填数据而不一定是从0,0开始,因此要获取首行列下标nStartRow    = usedrange->property("Row").toInt();    //第一行的起始位置nStartColumn = usedrange->property("Column").toInt(); //第一列的起始位置nRowCount    = rows->property("Count").toInt();       //获取行数nColumnCount = columns->property("Count").toInt();    //获取列数bIsOpen  = true;return bIsOpen;
}/***@brief Open()的重载函数*/
bool ExcelEngine::Open(QString xlsFile, UINT nSheet, bool visible)
{sXlsFile = xlsFile;nCurrSheet = nSheet;bIsVisible = visible;return Open(nCurrSheet,bIsVisible);
}void ExcelEngine::saveExecl(QMap<int,QTableWidget *> tmp)
{if(!Open("test.xls",1,false))qDebug() << "open xls error";qDebug() << "ExcelEngine::saveExecl";if(!SaveDataFrTable(tmp[1])){qDebug() << "output execl error";}this->Close();//    if(!excelengine->Open("test.xls",1,false))//        qDebug() << "open xls error";
}/***@brief 保存表格数据,把数据写入文件*/
void ExcelEngine::Save()
{if ( pWorkbook ){if (bIsSaveAlready){return ;}//        qDebug() << "save as" << sXlsFile;//        pWorkbook->dynamicCall("SaveAs (const QString&,int,const QString&,const QString&,bool,bool)",//                  sXlsFile,56,QString(""),QString(""),false,false);if (!bIsANewFile){qDebug() << "Save is new file " << sXlsFile;pWorkbook->dynamicCall("Save()");}else /*如果该文档是新建出来的,则使用另存为COM接口*/{qDebug() << "save as" << sXlsFile;//            pWorkbook->dynamicCall("SaveAs (const QString&)",//                                   "d:/code/svn/acanoe_brower/test.xls");pWorkbook->dynamicCall("SaveAs (const QString&,int,const QString&,const QString&,bool,bool)",sXlsFile,56,QString(""),QString(""),false,false);}bIsSaveAlready = true;}
}/***@brief 关闭前先保存数据,然后关闭当前Excel COM对象,并释放内存*/
void ExcelEngine::Close()
{//关闭前先保存数据Save();if ( pExcel && pWorkbook ){pWorkbook->dynamicCall("Close(bool)", true);pExcel->dynamicCall("Quit()");delete pExcel;pExcel = NULL;bIsOpen     = false;bIsValid    = false;bIsANewFile = false;bIsSaveAlready = true;}
}/***@brief 把tableWidget中的数据保存到excel中*@param tableWidget : 指向GUI中的tablewidget指针*@return 保存成功与否 true : 成功*                  false: 失败*/
bool ExcelEngine::SaveDataFrTable(QTableWidget *tableWidget)
{if ( NULL == tableWidget ){return false;}if ( !bIsOpen ){return false;}int tableR = tableWidget->rowCount();int tableC = tableWidget->columnCount();//获取表头写做第一行for (int i=0; i<tableC; i++){if ( tableWidget->horizontalHeaderItem(i) != NULL ){this->SetCellData(1,i+1,tableWidget->horizontalHeaderItem(i)->text());}}//写数据for (int i=0; i<tableR; i++){for (int j=0; j<tableC; j++){if ( tableWidget->item(i,j) != NULL ){this->SetCellData(i+2,j+1,tableWidget->item(i,j)->text());}}}qDebug() << " ExcelEngine::SaveDataFrTable " << sXlsFile;//保存Save();return true;
}/***@brief 从指定的xls文件中把数据导入到tableWidget中*@param tableWidget : 执行要导入到的tablewidget指针*@return 导入成功与否 true : 成功*                   false: 失败*/
bool ExcelEngine::ReadDataToTable(QTableWidget *tableWidget)
{if ( NULL == tableWidget ){return false;}//先把table的内容清空int tableColumn = tableWidget->columnCount();tableWidget->clear();for (int n=0; n<tableColumn; n++){tableWidget->removeColumn(0);}int rowcnt    = nStartRow + nRowCount;int columncnt = nStartColumn + nColumnCount;//获取excel中的第一行数据作为表头QStringList headerList;for (int n = nStartColumn; n<columncnt; n++ ){QAxObject * cell = pWorksheet->querySubObject("Cells(int,int)",nStartRow, n);if ( cell ){headerList<<cell->dynamicCall("Value2()").toString();}}//重新创建表头tableWidget->setColumnCount(nColumnCount);tableWidget->setHorizontalHeaderLabels(headerList);//插入新数据for (int i = nStartRow+1, r = 0; i < rowcnt; i++, r++ )  //行{tableWidget->insertRow(r); //插入新行for (int j = nStartColumn, c = 0; j < columncnt; j++, c++ )  //列{QAxObject * cell = pWorksheet->querySubObject("Cells(int,int)", i, j );//获取单元格//在r新行中添加子项数据if ( cell ){tableWidget->setItem(r,c,new QTableWidgetItem(cell->dynamicCall("Value2()").toString()));}}}return true;
}/***@brief 获取指定单元格的数据*@param row : 单元格的行号*@param column : 单元格的列号*@return [row,column]单元格对应的数据*/
QVariant ExcelEngine::GetCellData(UINT row, UINT column)
{QVariant data;QAxObject *cell = pWorksheet->querySubObject("Cells(int,int)",row,column);//获取单元格对象if ( cell ){data = cell->dynamicCall("Value2()");}return data;
}/***@brief 修改指定单元格的数据*@param row : 单元格的行号*@param column : 单元格指定的列号*@param data : 单元格要修改为的新数据*@return 修改是否成功 true : 成功*                   false: 失败*/
bool ExcelEngine::SetCellData(UINT row, UINT column, QVariant data)
{bool op = false;QAxObject *cell = pWorksheet->querySubObject("Cells(int,int)",row,column);//获取单元格对象if ( cell ){QString strData = data.toString(); //excel 居然只能插入字符串和整型,浮点型无法插入cell->dynamicCall("SetValue(const QVariant&)",strData); //修改单元格的数据op = true;}else{op = false;}return op;
}/***@brief 清空除报表之外的数据*/
void ExcelEngine::Clear()
{sXlsFile     = "";nRowCount    = 0;nColumnCount = 0;nStartRow    = 0;nStartColumn = 0;
}/***@brief 判断excel是否已被打开*@return true : 已打开*        false: 未打开*/
bool ExcelEngine::IsOpen()
{return bIsOpen;
}/***@brief 判断excel COM对象是否调用成功,excel是否可用*@return true : 可用*        false: 不可用*/
bool ExcelEngine::IsValid()
{return bIsValid;
}/***@brief 获取excel的行数*/
UINT ExcelEngine::GetRowCount()const
{return nRowCount;
}/***@brief 获取excel的列数*/
UINT ExcelEngine::GetColumnCount()const
{return nColumnCount;
}

修改密码


#include <QPalette>
#include <QLineEdit>
#include <QSqlQuery>#include "about_us.h"AboutUsDialog::AboutUsDialog(QWidget *parent,int index_tmp,QString name_tmp):QDialog(parent)
{this->resize(520, 290);index = index_tmp;name = name_tmp;qDebug() << index << name;QPalette palette;this->setAutoFillBackground(true);palette.setColor(QPalette::Background,QColor(155,225,123));this->setPalette(palette);//初始化为未按下鼠标左键mouse_press = false;//设置标题栏隐藏this->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);title_label = new QLabel();title_icon_label = new QLabel();title_info_label = new QLabel();info_label = new QLabel();version_label = new QLabel();mummy_label = new QLabel();copyright_label = new QLabel();icon_label = new QLabel();close_button = new PushButton();ok_button = new QPushButton();QPixmap title_pixmap(":/img/safe");title_icon_label->setPixmap(title_pixmap);title_icon_label->setFixedSize(16, 16);title_icon_label->setScaledContents(true);close_button->loadPixmap(":/sysButton/close");title_label->setFixedHeight(30);ok_button->setFixedSize(75, 25);QPixmap pixmap(":/img/360safe");icon_label->setPixmap(pixmap);icon_label->setFixedSize(pixmap.size());QFont title_info_font("微软雅黑", 20, QFont::Bold, false);QHBoxLayout *input1 = new QHBoxLayout();QHBoxLayout *input2 = new QHBoxLayout();QHBoxLayout *input3 = new QHBoxLayout();switch(index_tmp){case 1:{QLabel *L_name = new QLabel(tr("商品名 "));E_name = new QLineEdit;QLabel *L_Price = new QLabel(tr("商品价格"));E_Price = new QLineEdit;QLabel *L_amount = new QLabel(tr("数量   "));E_amount = new QLineEdit;QLabel *L_person = new QLabel(tr("管理员  "));E_person = new QLineEdit;QLabel *L_sign = new QLabel(tr("签字人 "));E_sign = new QLineEdit;QLabel *L_remark = new QLabel(tr("备注   "));E_remark = new QLineEdit;input1->addWidget(L_name);input1->addWidget(E_name);input1->addWidget(L_Price);input1->addWidget(E_Price);input1->setSpacing(10);input1->setContentsMargins(10, 0, 10, 0);input2->addWidget(L_amount);input2->addWidget(E_amount);input2->addWidget(L_person);input2->addWidget(E_person);input2->setSpacing(10);input2->setContentsMargins(10, 0, 10, 0);input3->addWidget(L_sign);input3->addWidget(E_sign);input3->addWidget(L_remark);input3->addWidget(E_remark);input3->setSpacing(10);input3->setContentsMargins(10, 0, 10, 0);break;}case 2:{QLabel *L_name = new QLabel(QString("商品 ") + name + " 出库");L_name ->setFont(title_info_font);E_name = new QLineEdit;//        QLabel *L_Price = new QLabel(tr("商品价格"));//        E_Price = new QLineEdit;QLabel *L_amount = new QLabel(tr("数量   "));E_amount = new QLineEdit;QLabel *L_person = new QLabel(tr("管理员  "));E_person = new QLineEdit;QLabel *L_sign = new QLabel(tr("签字人 "));E_sign = new QLineEdit;QLabel *L_remark = new QLabel(tr("备注   "));E_remark = new QLineEdit;input1->addWidget(L_name);//        input1->addWidget(E_name);//        input1->addWidget(L_Price);//        input1->addWidget(E_Price);input1->setSpacing(10);input1->setContentsMargins(10, 0, 10, 0);input2->addWidget(L_amount);input2->addWidget(E_amount);input2->addWidget(L_person);input2->addWidget(E_person);input2->setSpacing(10);input2->setContentsMargins(10, 0, 10, 0);input3->addWidget(L_sign);input3->addWidget(E_sign);input3->addWidget(L_remark);input3->addWidget(E_remark);input3->setSpacing(10);input3->setContentsMargins(10, 0, 10, 0);break;}case 3:{QLabel *L_name = new QLabel(QString("商品 ") + name + " 入库");L_name ->setFont(title_info_font);E_name = new QLineEdit;QSpacerItem *horizontalSpacer = new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Minimum);QLabel *L_Price = new QLabel(tr("入库价格"));E_Price = new QLineEdit;QLabel *L_amount = new QLabel(tr("数量   "));E_amount = new QLineEdit;QLabel *L_person = new QLabel(tr("管理员  "));E_person = new QLineEdit;QLabel *L_sign = new QLabel(tr("签字人 "));E_sign = new QLineEdit;QLabel *L_remark = new QLabel(tr("备注   "));E_remark = new QLineEdit;input1->addWidget(L_name);//        input1->addWidget(E_name);input1->addItem(horizontalSpacer);input1->addWidget(L_Price);input1->addWidget(E_Price);input1->setSpacing(10);input1->setContentsMargins(10, 0, 10, 0);input2->addWidget(L_amount);input2->addWidget(E_amount);input2->addWidget(L_person);input2->addWidget(E_person);input2->setSpacing(10);input2->setContentsMargins(10, 0, 10, 0);input3->addWidget(L_sign);input3->addWidget(E_sign);input3->addWidget(L_remark);input3->addWidget(E_remark);input3->setSpacing(10);input3->setContentsMargins(10, 0, 10, 0);break;}case 4:{QLabel *L_name = new QLabel();L_name->setText(name);L_name ->setFont(title_info_font);input2->addWidget(L_name);input2->setSpacing(10);input2->setContentsMargins(10, 0, 10, 0);break;}case 5:{QLabel *L_name = new QLabel();L_name->setText("请输入管理员密码:");L_name ->setFont(title_info_font);E_Price = new QLineEdit;input2->addWidget(L_name);input2->addWidget(E_Price);input2->setSpacing(10);input2->setContentsMargins(10, 0, 10, 0);break;}case 6:{QLabel *L_name = new QLabel(tr("现在密码 "));E_name = new QLineEdit;QLabel *L_Price = new QLabel(tr("修改为 "));E_Price = new QLineEdit;QLabel *L_amount = new QLabel(tr("再次确认"));E_amount = new QLineEdit;input1->addWidget(L_name);input1->addWidget(E_name);input1->setSpacing(10);input1->setContentsMargins(10, 0, 10, 0);input2->addWidget(L_Price);input2->addWidget(E_Price );input2->setSpacing(10);input2->setContentsMargins(10, 0, 10, 0);input3->addWidget(L_amount);input3->addWidget(E_amount);input3->setSpacing(10);input3->setContentsMargins(10, 0, 10, 0);break;}default:{return;}}QHBoxLayout *title_layout = new QHBoxLayout();title_layout->addWidget(title_icon_label, 0, Qt::AlignVCenter);title_layout->addWidget(title_label, 0, Qt::AlignVCenter);title_layout->addStretch();title_layout->addWidget(close_button, 0, Qt::AlignTop);title_layout->setSpacing(5);title_layout->setContentsMargins(10, 0, 5, 0);QHBoxLayout *bottom_layout = new QHBoxLayout();bottom_layout->addStretch();bottom_layout->addWidget(ok_button);bottom_layout->setSpacing(0);bottom_layout->setContentsMargins(0, 0, 30, 20);QVBoxLayout *main_layout = new QVBoxLayout();main_layout->addLayout(title_layout);main_layout->addStretch();      ///  添加格挡main_layout->addLayout(input1);main_layout->addStretch();main_layout->addLayout(input2);main_layout->addStretch();main_layout->addLayout(input3);main_layout->addStretch();main_layout->addLayout(bottom_layout);main_layout->setSpacing(0);main_layout->setContentsMargins(0, 0, 0, 0);setLayout(main_layout);title_label->setStyleSheet("color:white;");copyright_label->setStyleSheet("color:gray;");title_info_label->setStyleSheet("color:rgb(30,170,60);");info_label->setStyleSheet("color:rgb(30,170,60);");ok_button->setStyleSheet("QPushButton{border:1px solid lightgray;background:rgb(230,230,230);}" "QPushButton:hover{border-color:green; background:transparent;}");QFont info_font = info_label->font();info_font.setBold(true);info_label->setFont(info_font);ok_button->setText(tr("OK"));connect(ok_button, SIGNAL(clicked()), this, SLOT(getinput()));connect(close_button, SIGNAL(clicked()), this, SLOT(hide()));
}void AboutUsDialog::getinput()
{QStringList tmp;switch(index){case 1:{if(E_amount->text().toInt() == 0 ){E_amount->setText("数量必须为大于0的整数");return;}if(E_Price->text().toFloat() <= 0 ){E_Price->setText("单品价格必须是数字可以含小数");return;}tmp.append(E_name->text());tmp.append(E_Price->text());tmp.append(E_amount->text());tmp.append(E_person->text());tmp.append(E_sign->text());tmp.append(E_remark->text());emit setinput(tmp,index);break;}case 2:if(E_amount->text().toInt() == 0 ){E_amount->setText("数量必须为大于0的整数");return;}tmp.append(name);tmp.append(E_amount->text());tmp.append(E_person->text());tmp.append(E_sign->text());tmp.append(E_remark->text());emit setinput(tmp,index);break;case 3:if(E_amount->text().toInt() == 0 ){E_amount->setText("数量必须为大于0的整数");return;}if(E_Price->text().toFloat() <= 0 ){E_Price->setText("单品价格必须是数字可以含小数");return;}tmp.append(name);tmp.append(E_Price->text());tmp.append(E_amount->text());tmp.append(E_person->text());tmp.append(E_sign->text());tmp.append(E_remark->text());emit setinput(tmp,index);break;case 5:{//        QSqlQuery query;//        query.exec("create table sql_users_table (id integer primary key,user varchar(15),passwd varchar(100)");int i = 0;QSqlQuery querylist;//        qDebug() << querylist.exec(QString("select * from sql_users_table order by id desc"));qDebug() <<   querylist.exec(QString("select * from sql_users_table where user_name=\"admin\"" ));while(querylist.next()){i++;if(querylist.value(2).toString() == E_Price->text()){emit setinput(tmp,index);}else {E_Price->setText("密码错误");return;}//            tmp.v_id = querylist.value(0).toString();//            tmp.name = querylist.value(1).toString();//            tmp.state = querylist.value(2).toString();//            tmp.amount = querylist.value(3).toString();//            tmp.price = querylist.value(4).toString();//            tmp.total_price = querylist.value(5).toString();//            tmp.controller = querylist.value(6).toString();//            tmp.remark = querylist.value(7).toString();//            tmp.time = querylist.value(8).toString();}if(i == 0){E_Price->setText("密码错误");return;}break;}case 6:{int i = 0;QSqlQuery querylist;//        qDebug() << querylist.exec(QString("select * from sql_users_table order by id desc"));qDebug() <<   querylist.exec(QString("select * from sql_users_table where user_name=\"admin\"" ));while(querylist.next()){i++;if(querylist.value(2).toString() == E_name->text()){if(E_Price->text() == E_amount->text()){if(querylist.exec(QString("UPDATE sql_users_table SET user_passwd='" + E_Price->text() + "' WHERE user_name='admin'"))){qDebug() << "change passwd is crrect";}else{E_Price->setText("密码数据更新失败");qDebug() << "change passwd is error";return;}emit setinput(tmp,index);}else {E_amount->setText("输入不匹配,请重新输入");return;}}else {E_name->setText("密码错误");return;}//            tmp.v_id = querylist.value(0).toString();//            tmp.name = querylist.value(1).toString();//            tmp.state = querylist.value(2).toString();//            tmp.amount = querylist.value(3).toString();//            tmp.price = querylist.value(4).toString();//            tmp.total_price = querylist.value(5).toString();//            tmp.controller = querylist.value(6).toString();//            tmp.remark = querylist.value(7).toString();//            tmp.time = querylist.value(8).toString();}break;}default:break;}this->close();
}void AboutUsDialog::translateLanguage()
{}AboutUsDialog::~AboutUsDialog()
{}void AboutUsDialog::paintEvent(QPaintEvent *)
{
}void AboutUsDialog::mousePressEvent( QMouseEvent * event )
{//只能是鼠标左键移动和改变大小if(event->button() == Qt::LeftButton){mouse_press = true;}//窗口移动距离move_point = event->globalPos() - pos();
}void AboutUsDialog::mouseReleaseEvent(QMouseEvent *)
{mouse_press = false;
}void AboutUsDialog::mouseMoveEvent(QMouseEvent *event)
{//移动窗口if(mouse_press){QPoint move_pos = event->globalPos();move(move_pos - move_point);}
}

##########################################################

欢迎广大学子交流嵌入式和安卓开发

aiku老师 微信号  :aiku868

微信公众平台:aiku嵌入式视频教程创科之龙

aiku老师QQ:1653687969

技术解答QQ群:234945702

aiku老师 微信号欢迎一起交流!(有任何问题都可以问我,随时解答问题。)

##########################################################

代码下载网盘:(免费下载学习)

第一期视频教程

链接:https://pan.baidu.com/s/1YAnAQVaIlnc2k1pkKzCCBg 密码:4gu6
第二期视频教程
接:https://pan.baidu.com/s/1QoyABxf6J1o6mtA8hjaa3Q 密码:7z01
第三期视频教程
链接:https://pan.baidu.com/s/1Jj6jqBQZC0CABW1kOqZU6A 密码:ox0l

##########################################################


##########################################################

[嵌入式Linux项目实战开发]基于QT4.8的仓库管理系统实现功能【2019年给力项目】相关推荐

  1. [嵌入式Linux项目实战开发]基于QT4.7.4的音乐播放器实现与设计【2018年给力项目】

    [嵌入式Linux项目实战开发]基于QT4.7.4的音乐播放器实现与设计[2018年给力项目]是[创科之龙]团队aiku嵌入式视频教程系列制作的现有的音乐播放器. 主要功能实现: 1.新建工程,基类选 ...

  2. 项目实战4: 基于 SpringBoot 的超市账单管理系统

    文章目录 一.项目介绍 二.数据库设计 三.概要设计 确立对象,划分模块 四.详细设计 4.1 Shiro 授权与鉴权流程梳理 4.1.1 了解 Shiro 4.1.2 Shiro 数据库设计 4.1 ...

  3. 嵌入式linux sip电话开发,基于嵌入式Linux和MiniGUI的SIP电话设计

    0 引言 随着VoIP的迅猛发展,越来越多的个人用户正在使用软件电话.IP电话通过VoIP系统拨打国内和国际长途,IP电话的需求量越来越大,同时,人们对IP电话的要求也越来越高,例如要求IP电话体积小 ...

  4. django mysql开发_基于django框架web项目实战开发四 django+mysql实现增删查改功能

    第一步:编写增删查改功能代码 打开项目myweb目录下view.py, 并编写以下代码 view.py from django.shortcuts import render, redirect fr ...

  5. 零基础学习嵌入式入门以及项目实战开发【手把手教+国内独家+原创】

    零基础学习嵌入式入门以及项目实战开发[手把手教+国内独家+原创] 独家拥有,绝对经典                            创 科 之 龙 嵌入式开发经典系列教程 [第一期] 主讲人: ...

  6. RAM嵌入式项目实战开发

    对于有嵌入式技术基础的初学者来说,嵌入式项目实战是具有很大吸引力和挑战性的.同时,通过项目实践可以快速提升自己的实战技术,编程能力和项目开发能力.为了记录自己的学习历程,特写此文以回顾. (一)arm ...

  7. 【创科之龙】零基础学习嵌入式开发以及项目实战开发【第二期视频】

    [创科之龙]零基础学习嵌入式开发以及项目实战开发[学习交流零基础火热进行ing] 大家好,我是aiku,上期的项目学习资料在电子发烧友论坛上分享,大家觉得都很好. 在这里我首先要感谢电子发烧友给我们的 ...

  8. aiku大神归来!送给初学者嵌入式项目实战开发

    aiku大神归来!送给初学者嵌入式项目实战开发 aiku嵌入式视频教程 地址:[创科之龙]基于安卓(android)Linux3.x平台下设备树专题 https://pan.baidu.com/s/1 ...

  9. (项目实战)基于QT嵌入式ARM数据采集卡上位机(二)——页面布局

    (项目实战)基于QT嵌入式ARM数据采集卡上位机(二)--页面布局 上一篇文章<基于 QT 嵌入式ARM数据采集卡上位机(一)> 下一篇文章<(项目实战)基于QT嵌入式ARM数据采集 ...

最新文章

  1. .NET编码解码(HtmlEncode与HtmlEncode)
  2. java交易系统_基于SSM框架的JAVA二手交易系统
  3. Java编程基础-运算符
  4. 根据”so劫持”过360加固详细分析
  5. 小程序沉浸式_古北水镇红叶祭嵌入戏精学院 全新文旅沉浸模式让游客嗨起来...
  6. pthread_create函数阻塞了主线程_5个状态,Python 中线程的生命周期
  7. oracle实验数据库和表,1oracle创建数据库和表.doc
  8. 嘘,我已经瞒着开发解锁APP日志文件抓取及分析啦!
  9. VIM插件——vimplus安装(centos 7)
  10. [xsy2282]cake
  11. baacloud是正规软件吗_baacloud,
  12. turbo c是什么?
  13. 经纬财富:开封如何炒现货白银
  14. The Devil is in the Details: Self-Supervised Attention for Vehicle Re-Identification(翻译)
  15. 帧中继网络与NBMA/P2MA
  16. Unity | Unity中UI框架的实现与使用
  17. 计算机内存采用什么存储模式,计算机内存模型
  18. MATLAB解决工业机器人建模笔记——atan2函数MATLAB实现
  19. python爬取小说章节_python之如何爬取一篇小说的第一章内容
  20. item在C语言中是什么意思中文,item的中文翻译是什么意思

热门文章

  1. Python tkinter库
  2. Java反射 Class类常用方法详解
  3. 国内应届生是不是把Leetcode刷的滚瓜烂熟就能进google了?
  4. 总结shareSDK分享到各平台需注意
  5. python创业公司做什么最赚钱农村_最适合农村的创业项目,成本不超过500块,做好就能快速发家致富...
  6. 小程序城市按首字母排序(如同苹果手机通讯录一样得效果)
  7. Java程序GUI与JDBC的应用
  8. 罗切斯特大学将研究未来执行军事任务的量子计算
  9. 影响中国软件开发的20人
  10. HI3559算法移植之OpenCV图像拼接、配准和图像融合技术(三)