基于qt的对话框录入界面本科毕业论文_第1页
基于qt的对话框录入界面本科毕业论文_第2页
基于qt的对话框录入界面本科毕业论文_第3页
基于qt的对话框录入界面本科毕业论文_第4页
基于qt的对话框录入界面本科毕业论文_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告课程名称软件案例分析实验名称基于对话框的录入界面班级学号姓名成绩指导教师实验日期实验目的了解Qt数据库访问技术(加载数据库驱动)。掌握QSqlDatabase类和QSqlQuery类的使用。了解熟悉QtCreator开发环境及相关控件的使用。了解信号和槽的关联及作用。掌握基于对话框的用户界面设计方法和数据操作方法。掌握主窗口和子窗口之间数据访问方法。实验环境QtCreator+MinGW4.9(32-bit),Windows7,4G内存,DELL笔记本一台。实验要求实现对人事(或其他)基本信息的增加、编辑、删除、刷新和导出功能。参考运行界面如图所示。运行界面友好简洁。主界面“增加个人基本信息”对话框“修改个人基本信息”对话框实验步骤及代码(1)启动QtCreator,创建基于部件框的QtWidgetsApplication类型的应用程序,命名为Widget。(2)修改对话框标题为“人事基本信息管理”。在主界面窗口中添加6个按钮控件,一个TableWidget控件,界面设计如图所示。在主界面设置6个PushButton控件,设置text文本为“刷新”,“导出”,“增加”,“编辑”,“删除”,“退出”,编辑TableWidget的条目,分别为“序号”,“姓名”,“性别”,“出生日期”,“电话”,“最后学位”,“毕业学校”,“毕业时间”,“备注”。向工程中添加Qt设计师界面类(模板为Widget)子对话框资源,命名为“Add”,向界面添加Label,LineEdit,DateEdit,ConboBox等控件若干,界面设计如图。在Widget.h添加如下代码://声明信号signals:voidsendStr(QString,QString,QString,QString,QString,QString,QString,QString,QString,int);//声明槽privateslots:voidon_pushButton_clicked();voidon_tableWidget_cellDoubleClicked(introw,intcolumn);voidon_pushButton_4_clicked();voidon_tableWidget_cellClicked(introw,intcolumn);voidon_pushButton_3_clicked();voidon_pushButton_5_clicked();voidon_pushButton_2_clicked();private:Ui::Widget*ui;intr;Add*add;//增加界面对象QSqlDatabasedb;public:voidcreateConnection();//创建连接voidinit();voidsetCW();voidTable2Excel(QTableWidget*table,QStringtitle);//导出函数protected:voidcontextMenuEvent(QContextMenuEvent*);//增加右击菜单创建连接连接数据库,其函数代码如下:voidWidget::createConnection(){db=QSqlDatabase::addDatabase("QMYSQL");db.setHostName("localhost");db.setPort(3306);db.setDatabaseName("qt");db.setUserName("root");db.setPassword("121819");if(!db.open()){QMessageBox::warning(this,"警告","数据库连接失败!!!");exit(0);return;}}初始化函数代码如下(主要为查询数据库代码):voidWidget::init(){QSqlQueryquery("select*fromrenshi");while(query.next()){QStringListlist;list<<query.value(0).toString()<<query.value(1).toString()<<query.value(2).toString()<<query.value(3).toString()<<query.value(4).toString()<<query.value(5).toString()<<query.value(6).toString()<<query.value(7).toString()<<query.value(8).toString();intrownum=ui->tableWidget->rowCount();ui->tableWidget->insertRow(rownum);ui->tableWidget->setItem(rownum,0,newQTableWidgetItem(list.at(0)));ui->tableWidget->setItem(rownum,1,newQTableWidgetItem(list.at(1)));ui->tableWidget->setItem(rownum,2,newQTableWidgetItem(list.at(2)));ui->tableWidget->setItem(rownum,3,newQTableWidgetItem(list.at(3)));ui->tableWidget->setItem(rownum,4,newQTableWidgetItem(list.at(4)));ui->tableWidget->setItem(rownum,5,newQTableWidgetItem(list.at(5)));ui->tableWidget->setItem(rownum,6,newQTableWidgetItem(list.at(6)));ui->tableWidget->setItem(rownum,7,newQTableWidgetItem(list.at(7)));ui->tableWidget->setItem(rownum,8,newQTableWidgetItem(list.at(8)));}}在构造函数中添加如下代码:ui->setupUi(this);add=newAdd;connect(this,SIGNAL(sendStr(QString,QString,QString,QString,QString,QString,QString,QString,QString,int)),add,SLOT(recvStr(QString,QString,QString,QString,QString,QString,QString,QString,QString,int)));connect(add,SIGNAL(senMsg()),this,SLOT(on_pushButton_clicked()));setCW();//去掉默认行号QHeaderView*headerView=ui->tableWidget->verticalHeader();headerView->setHidden(true);createConnection();init();r=-1;导出函数,代码如下:voidWidget::Table2Excel(QTableWidget*table,QStringtitle){QStringfileName=QFileDialog::getSaveFileName(table,"保存",QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation),"Excel文件(*.xls*.xlsx)");if(fileName!=""){QAxObject*excel=newQAxObject;if(excel->setControl("Excel.Application"))//连接Excel控件{excel->dynamicCall("SetVisible(boolVisible)","false");//不显示窗体excel->setProperty("DisplayAlerts",false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示QAxObject*workbooks=excel->querySubObject("WorkBooks");//获取工作簿集合workbooks->dynamicCall("Add");//新建一个工作簿QAxObject*workbook=excel->querySubObject("ActiveWorkBook");//获取当前工作簿QAxObject*worksheet=workbook->querySubObject("Worksheets(int)",1);inti,j,colcount=table->columnCount();QAxObject*cell,*col;//标题行cell=worksheet->querySubObject("Cells(int,int)",1,1);cell->dynamicCall("SetValue(constQString&)",title);cell->querySubObject("Font")->setProperty("Size",18);//调整行高worksheet->querySubObject("Range(constQString&)","1:1")->setProperty("RowHeight",30);//合并标题行QStringcellTitle;cellTitle.append("A1:");cellTitle.append(QChar(colcount-1+'A'));cellTitle.append(QString::number(1));QAxObject*range=worksheet->querySubObject("Range(constQString&)",cellTitle);range->setProperty("WrapText",true);range->setProperty("MergeCells",true);range->setProperty("HorizontalAlignment",-4108);//xlCenterrange->setProperty("VerticalAlignment",-4108);//xlCenter//列标题for(i=0;i<colcount;i++){QStringcolumnName;columnName.append(QChar(i+'A'));columnName.append(":");columnName.append(QChar(i+'A'));col=worksheet->querySubObject("Columns(constQString&)",columnName);col->setProperty("ColumnWidth",table->columnWidth(i)/6);cell=worksheet->querySubObject("Cells(int,int)",2,i+1);columnName=table->horizontalHeaderItem(i)->text();cell->dynamicCall("SetValue(constQString&)",columnName);cell->querySubObject("Font")->setProperty("Bold",true);cell->querySubObject("Interior")->setProperty("Color",QColor(191,191,191));cell->setProperty("HorizontalAlignment",-4108);//xlCentercell->setProperty("VerticalAlignment",-4108);//xlCenter}//数据区for(i=0;i<table->rowCount();i++){for(j=0;j<colcount;j++){worksheet->querySubObject("Cells(int,int)",i+3,j+1)->dynamicCall("SetValue(constQString&)",table->item(i,j)?table->item(i,j)->text():"");}}//画框线QStringlrange;lrange.append("A2:");lrange.append(colcount-1+'A');lrange.append(QString::number(table->rowCount()+2));range=worksheet->querySubObject("Range(constQString&)",lrange);range->querySubObject("Borders")->setProperty("LineStyle",QString::number(1));range->querySubObject("Borders")->setProperty("Color",QColor(0,0,0));//调整数据区行高QStringrowsName;rowsName.append("2:");rowsName.append(QString::number(table->rowCount()+2));range=worksheet->querySubObject("Range(constQString&)",rowsName);range->setProperty("RowHeight",20);workbook->dynamicCall("SaveAs(constQString&)",QDir::toNativeSeparators(fileName));//保存至fileNameworkbook->dynamicCall("Close()");//关闭工作簿excel->dynamicCall("Quit()");//关闭exceldeleteexcel;excel=NULL;if(QMessageBox::question(NULL,"完成","文件已经导出,是否现在打开?",QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes){QDesktopServices::openUrl(QUrl("file:///"+QDir::toNativeSeparators(fileName)));}}else{QMessageBox::warning(NULL,"错误","未能创建Excel对象,请安装MicrosoftExcel。",QMessageBox::Apply);}}}右键菜单函数,代码如下:voidWidget::contextMenuEvent(QContextMenuEvent*){QMenu*menu=newQMenu(this);QAction*action=newQAction(this);QAction*action1=newQAction(this);QAction*action2=newQAction(this);QAction*action3=newQAction(this);QAction*action4=newQAction(this);QAction*action5=newQAction(this);action->setText(tr("刷新"));action1->setText(tr("导出"));action2->setText(tr("增加"));action3->setText(tr("编辑"));action4->setText(tr("删除"));action5->setText(tr("退出"));connect(action,SIGNAL(triggered(bool)),this,SLOT(on_pushButton_clicked()));connect(action1,SIGNAL(triggered(bool)),this,SLOT(on_pushButton_2_clicked()));connect(action2,SIGNAL(triggered(bool)),this,SLOT(on_pushButton_3_clicked()));connect(action3,SIGNAL(triggered(bool)),this,SLOT(on_pushButton_4_clicked()));connect(action4,SIGNAL(triggered(bool)),this,SLOT(on_pushButton_5_clicked()));connect(action5,SIGNAL(triggered(bool)),this,SLOT(close()));menu->addAction(action);menu->addSeparator();menu->addAction(action1);menu->addSeparator();menu->addAction(action2);menu->addSeparator();menu->addAction(action3);menu->addSeparator();menu->addAction(action4);menu->addSeparator();menu->addAction(action5);menu->addSeparator();menu->exec(QCursor::pos());}双击修改函数和6个PushButton添加信号对应的槽(类似消息响应函数),代码如下:voidWidget::on_pushButton_clicked(){ui->tableWidget->setRowCount(0);ui->tableWidget->clearContents();init();}voidWidget::on_tableWidget_cellDoubleClicked(introw,intcolumn){emitsendStr(ui->tableWidget->item(row,0)->text(),ui->tableWidget->item(row,1)->text(),ui->tableWidget->item(row,2)->text(),ui->tableWidget->item(row,3)->text(),ui->tableWidget->item(row,4)->text(),ui->tableWidget->item(row,5)->text(),ui->tableWidget->item(row,6)->text(),ui->tableWidget->item(row,7)->text(),ui->tableWidget->item(row,8)->text(),2);add->setWindowTitle("修改个人基本信息");add->show();}voidWidget::on_pushButton_4_clicked(){if(r==-1){QMessageBox::warning(this,"警告","请选择要修改的行!");return;}on_tableWidget_cellDoubleClicked(r,0);}voidWidget::on_tableWidget_cellClicked(introw,intcolumn){r=row;}voidWidget::on_pushButton_3_clicked(){add->show();emitsendStr(QString::number(ui->tableWidget->rowCount()+1),"","","","","","","","",1);add->setWindowTitle("增加个人基本信息");}voidWidget::on_pushButton_5_clicked(){if(r==-1){QMessageBox::warn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论