《基于QT的进度条显示代码(共8页).doc》由会员分享,可在线阅读,更多相关《基于QT的进度条显示代码(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 实 验 报 告 课程名称 软件案例分析 实验名称 进度指示器制作 班 级 学 号 姓 名 成 绩 指导教师 实验日期 1. 实验目的(1) 理解自定义进度指示器的设计原理。(2) 理解进度百分比反色显示实现原理。(3) 了解熟悉Qt Creator开发环境及相关控件的使用。(4) 了解信号和槽的关联及作用。(5) 熟练掌握QTimer定时器的使用方法。(6) 掌握动态控件的创建和使用方法。(7) 掌握嵌入子对话框的实现方法。2. 实验环境Qt Creator + MinGW 4.9 (32-bit),Windows7,4G内存,DELL笔记本一台。3. 实验要求(1
2、) 进度条未完成进度为白底红(或其他颜色)字。(2) 进度条已完成进度为红(或其他颜色)底白字。(3) 进度具有加速、减速、停止功能,如图所示。(4) 运行界面友好简洁。 主界面 子界面4. 实验步骤及代码(1)启动Qt Creator,创建基于对话框的Qt Widgets Application类型的应用程序,命名为ProSelf。(2)修改对话框标题为“进度指示器”。在主界面窗口中添加5个按钮控件,三个静态文本控件,和一个进度条控件,界面设计如图所示。(3) 在主界面设置五个PushButton控件,对象名称分别为“start”,“up”,“down”,“stop”,“Close”,设置t
3、ext文本为“开始”,“加速”,“减速”,“停止”,“关闭”,设置三个标签的text文本为“速度”,“0”,“秒/次”。(4) 向工程中添加Qt设计师界面类(模板为Dialog without Buttons)子对话框资源,命名为“Dialog”,修改标题为“窗口标题”,向设计界面添加一个Group Box控件,设置标题为“子标题”,向Group Box控件中添加一个进度条控件,界面设计如图。(5) 在ProgBar.h添加如下代码:/声明槽private slots: void on_start_clicked();/开始 void on_up_clicked();/加速 void on_d
4、own_clicked();/减速 void on_stop_clicked();/停止 void on_Close_clicked();/关闭signals: void sendValue(int);/传值private: Ui:Widget *ui; int i;/变量 QTimer *timerStart;/开始定时器 QTimer *timerUp;/加速定时器 QTimer *timerDown;/减速定时器 Dialog *dialog;/子对话框(6) 主界面类构造函数中进行成员变量的初始化。示例代码如下:this-setFixedSize(width(),height(); u
5、i-progressBar-setValue(0);/初始值为0 ui-progressBar-setRange(0,MAXSIZE-1);/设置进度条值的范围 /红底 ui-progressBar-setStyleSheet(QProgressBar:chunk background-color: rgb(255, 0, 0) ); timerStart=new QTimer(this); timerUp=new QTimer(this); timerDown=new QTimer(this); connect(timerStart,SIGNAL(timeout(),this,SLOT(on
6、_start_clicked(); connect(timerUp,SIGNAL(timeout(),this,SLOT(on_up_clicked(); connect(timerDown,SIGNAL(timeout(),this,SLOT(on_down_clicked(); i=0; dialog=new Dialog; connect(this,SIGNAL(sendValue(int),dialog,SLOT(getValue(int); dialog-show(); i=0; ui-start-setEnabled(true); ui-up-setEnabled(false);
7、ui-down-setEnabled(false); ui-stop-setEnabled(false);(7) 分别为五个PushButton添加信号对应的槽(类似消息响应函数),代码如下:/开始void Widget:on_start_clicked() ui-start-setEnabled(false); ui-up-setEnabled(true); ui-down-setEnabled(true); ui-stop-setEnabled(true); timerStart-start(1); timerUp-stop(); timerDown-stop(); if(i =MAXSI
8、ZE-1 ) ui-progressBar-setValue(MAXSIZE-1); emit sendValue(MAXSIZE-1); timerStart-stop(); QMessageBox:information(this,tr(提示),tr(结束!),QMessageBox:Ok|QMessageBox:Default); return; /赋值 ui-progressBar-setValue(i); i+=I; emit sendValue(i); ui-label_2-setText(4);/加速void Widget:on_up_clicked() timerUp-star
9、t(1); timerDown-stop(); timerStart-stop(); if(i =MAXSIZE-1 ) ui-progressBar-setValue(MAXSIZE-1); emit sendValue(MAXSIZE-1); timerUp-stop(); QMessageBox:information(this,tr(提示),tr(结束!),QMessageBox:Ok|QMessageBox:Default); return; ui-progressBar-setValue(i); i+=UP; emit sendValue(i); ui-label_2-setTex
10、t(7);/减速void Widget:on_down_clicked() timerDown-start(1); timerStart-stop(); timerUp-stop(); if(i =MAXSIZE-1 ) ui-progressBar-setValue(MAXSIZE-1); emit sendValue(MAXSIZE-1); timerDown-stop(); QMessageBox:information(this,tr(提示),tr(结束!),QMessageBox:Ok|QMessageBox:Default); return; ui-progressBar-setV
11、alue(i); i+=DOWN; emit sendValue(i); ui-label_2-setText(1);/停止void Widget:on_stop_clicked() ui-start-setEnabled(true); ui-up-setEnabled(false); ui-down-setEnabled(false); ui-stop-setEnabled(false); timerStart-stop(); timerDown-stop(); timerUp-stop(); ui-label_2-setText(0);/关闭void Widget:on_Close_clicked() this-close(); dialog-close();5. 结果截图初始界面开始界面加速界面减速界面6. 回答思考题(1) 为了实现进度值的渐变反色显示,在CreateUpEdit函数中如何控制上层中间红底白字编辑框的动态显示?答:实时监控当前进度的变化,当当前的进度达到一半(50%)时,根据计算对应的坐标即可控制上层中间红底白字编辑框的动态显示。(2) 若采用动态控件数组,如何实现4个动态编辑框的创建和控制?答:在开始按钮点击后,根据当前的进度,计算对应的速度,分别创建并用动态控件的4个编辑框动态显示当前的信息即可。专心-专注-专业
限制150内