《基于qt的对话框录入界面本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于qt的对话框录入界面本科毕业论文.doc(16页珍藏版)》请在金锄头文库上搜索。
1、 实 验 报 告 课程名称 软件案例分析 实验名称 基于对话框的录入界面 班 级 学 号 姓 名 成 绩 指导教师 实验日期 1. 实验目的(1) 了解Qt数据库访问技术(加载数据库驱动)。(2) 掌握QSqlDatabase类和QSqlQuery类的使用。(3) 了解熟悉Qt Creator开发环境及相关控件的使用。(4) 了解信号和槽的关联及作用。(5) 掌握基于对话框的用户界面设计方法和数据操作方法。(6) 掌握主窗口和子窗口之间数据访问方法。2. 实验环境Qt Creator + MinGW 4.9 (32-bit),Windows7,4G内存,DELL笔记本一台。3. 实验要求(1)
2、 实现对人事(或其他)基本信息的增加、编辑、删除、刷新和导出功能。(2) 参考运行界面如图所示。(3) 运行界面友好简洁。 主界面 “增加个人基本信息”对话框“修改个人基本信息”对话框4. 实验步骤及代码(1)启动Qt Creator,创建基于部件框的Qt Widgets Application类型的应用程序,命名为Widget。(2)修改对话框标题为“人事基本信息管理”。在主界面窗口中添加6个按钮控件,一个Table Widget控件,界面设计如图所示。(3) 在主界面设置6个PushButton控件,设置text文本为“刷新”,“导出”,“增加”,“编辑”,“删除”,“退出”,编辑Tabl
3、e Widget的条目,分别为“序号”,“姓名”,“性别”,“出生日期”,“电话”,“最后学位”,“毕业学校”,“毕业时间”,“备注”。(4) 向工程中添加Qt设计师界面类(模板为Widget)子对话框资源,命名为“Add”,向界面添加Label,Line Edit,Date Edit,Conbo Box等控件若干,界面设计如图。(5) 在Widget.h添加如下代码:/声明信号signals: void sendStr(QString ,QString,QString,QString,QString,QString,QString,QString,QString,int);/声明槽priva
4、te slots: void on_pushButton_clicked(); void on_tableWidget_cellDoubleClicked(int row, int column); void on_pushButton_4_clicked(); void on_tableWidget_cellClicked(int row, int column); void on_pushButton_3_clicked(); void on_pushButton_5_clicked(); void on_pushButton_2_clicked();private: Ui:Widget
5、*ui; int r; Add *add;/增加界面对象 QSqlDatabase db;public: void createConnection();/创建连接 void init(); void setCW(); void Table2Excel(QTableWidget *table,QString title);/导出函数protected: void contextMenuEvent(QContextMenuEvent *);/增加右击菜单(6) 创建连接连接数据库,其函数代码如下:void Widget:createConnection() db=QSqlDatabase:add
6、Database(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; (7) 初始化函数代码如下(主要为查询数据库代码):void Widget:init() QSqlQuery query(select *from renshi); while(query.ne
7、xt() QStringList list; listquery.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()tableWidget-rowCount(); ui-tableWidget-insertRow(rownum); ui-tableWidge
8、t-setItem(rownum, 0, new QTableWidgetItem(list.at(0); ui-tableWidget-setItem(rownum, 1, new QTableWidgetItem(list.at(1); ui-tableWidget-setItem(rownum, 2, new QTableWidgetItem(list.at(2); ui-tableWidget-setItem(rownum, 3, new QTableWidgetItem(list.at(3); ui-tableWidget-setItem(rownum, 4, new QTableW
9、idgetItem(list.at(4); ui-tableWidget-setItem(rownum, 5, new QTableWidgetItem(list.at(5); ui-tableWidget-setItem(rownum, 6, new QTableWidgetItem(list.at(6); ui-tableWidget-setItem(rownum, 7, new QTableWidgetItem(list.at(7); ui-tableWidget-setItem(rownum, 8, new QTableWidgetItem(list.at(8); (8) 在构造函数中
10、添加如下代码:ui-setupUi(this); add=new Add; 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()
11、;setCW();/去掉默认行号QHeaderView* headerView = ui-tableWidget-verticalHeader();headerView-setHidden(true);createConnection();init();r=-1;(9) 导出函数,代码如下:void Widget:Table2Excel(QTableWidget *table, QString title) QString fileName = QFileDialog:getSaveFileName(table, 保存, QStandardPaths:writableLocation(QSta
12、ndardPaths:DocumentsLocation), Excel 文件(*.xls *.xlsx); if (fileName!=) QAxObject *excel = new QAxObject; if (excel-setControl(Excel.Application) /连接Excel控件 excel-dynamicCall(SetVisible (bool Visible),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); int i,j,colcount=table-columnCount(); QAxObject *cell,*col;