基于QT的进度条显示代码
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)在主界面设置五个PushButton控件,对象名称分别为“start”,“up”,“down”,“stop”,“Close”,设置text文本为“开始”,“加速”,“减速”,“停止”,“关闭”,设置三个标签的text文本为“速度”,“0”,“秒/次”。
(4)向工程中添加Qt设计师界面类(模板为Dialog without Buttons)子对话框资源,命名为“Dialog”,修改标题为“窗口标题”,向设计界面添加一个Group Box控件,设置标题为“子标题”,向Group Box控件中添加一个进度条控件,界面设计如图。
(3)进度具有加速、减速、停止功能,如图所示。
(4)运行界面友好简洁。
主界面
子界面
4.实验步骤及代码
(1)启动Qt Creator,创建基于对话框的Qt Widgets Application类型的应用程序,命名为ProSelf。
(2)修改对话框标题为“进度指示器”。在主界面窗口中添加5个按钮控件,三个静态文本控件,和一个进度条控件,界面设计如图所示。
答:实时监控当前进度的变化,当当前的进度达到一半(50%)时,根据计算对应的坐标即可控制上层中间红底白字编辑框的动态显示。
(2)若采用动态控件数组,如何实现4个动态编辑框的创建和控制?
答:在开始按钮点击后,根据当前的进度,计算对应的速度,分别创建并用动态控件的4个编辑框动态显示当前的信息即可。
return;
}
ui->progressBar->setValue(i);
i+=DOWN;
emit sendValue(i);
ui->label_2->setText("1");
}
//停止
void Widget::on_stop_clicked()
{
ui->start->setEnabled(true);
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);
//红底
ui->progressBar->setStyleSheet("QProgressBar::chunk { background-color: rgb(255, 0, 0) }");
timerStart=new QTimer(this);
timerUp=new QTimer(this);
timerDown=new QTimer(this);
}
//关闭
void Widget::on_Close_clicked()
{
this->close();
dialog->close();
}
5.结果截图
初始界面
开始界面
加速界面
减速界面
6.回答思考题
(1)为了实现进度值的渐变反色显示,在CreateUpEdit函数中如何控制上层中间红底白字编辑框的动态显示?
{
ui->progressBar->setValue(MAXSIZE-1);
emit sendValue(MAXSIZE-1);
timerStart->stop();
QMessageBox::information(this,tr("提示"),tr("结束!"),QMessageBox::Ok|QMessageBox::Default);
connect(timerStart,SIGNAL(timeout()),this,SLOT(on_start_clicked()));
connect(timerUp,SIGNAL(timeout()),this,SLOT(on_up_clicked()));
connect(timerDown,SIGNAL(timeout()),this,SLOT(on_down_clicked()));
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);
(5)在ProgBar.h添加如下代码:
//声明槽
private slots:
void on_start_clicked();//开始
void on_up_clicked();//加速
void on_down_clicked();//减速
void on_stop_clicked();//停止
void on_Close_clicked();//关闭
ui->down->setEnabled(false);
ui->stop->setEnabled(false);
(7)分别为五个PushButton添加信号对应的槽(类似消息响应函数),代码如下:
//开始
void Widget::on_start_clicked()
{
ui->start->setEnabled(false);
return;
}
ui->progressBar->setValue(i);
i+=UP;
emit sendValue(i);
ui->label_2->setText("7");
}
//减速
void Widget::on_down_clicked()
{
timerDown->start(1);
timerStart->stop(分析
实验名称进度指示器制作
班级
学号
姓名
成绩
指导教师
实验日期
1.实验目的
(1)理解自定义进度指示器的设计原理。
(2)理解进度百分比反色显示实现原理。
(3)了解熟悉Qt Creator开发环境及相关控件的使用。
(4)了解信号和槽的关联及作用。
(5)熟练掌握QTimer定时器的使用方法。
(6)主界面类构造函数中进行成员变量的初始化。示例代码如下:
this->setFixedSize(width(),height());
ui->progressBar->setValue(0);//初始值为0
ui->progressBar->setRange(0,MAXSIZE-1);//设置进度条值的范围
signals:
void sendValue(int);//传值
private:
Ui::Widget *ui;
int i;//变量
QTimer *timerStart;//开始定时器
QTimer *timerUp;//加速定时器
QTimer *timerDown;//减速定时器
Dialog *dialog;//子对话框
(6)掌握动态控件的创建和使用方法。
(7)掌握嵌入子对话框的实现方法。
2.实验环境
Qt Creator + MinGW 4.9 (32-bit),Windows7,4G内存,DELL笔记本一台。
3.实验要求
(1)进度条未完成进度为白底红(或其他颜色)字。
(2)进度条已完成进度为红(或其他颜色)底白字。
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);
ui->up->setEnabled(false);
ui->down->setEnabled(false);
ui->stop->setEnabled(false);
timerStart->stop();
timerDown->stop();
timerUp->stop();
ui->label_2->setText("0");
ui->up->setEnabled(true);
ui->down->setEnabled(true);
ui->stop->setEnabled(true);
timerStart->start(1);
timerUp->stop();
timerDown->stop();
if(i >=MAXSIZE-1 )
return;
}
//赋值
ui->progressBar->setValue(i);
i+=I;
emit sendValue(i);
ui->label_2->setText("4");
}
//加速
void Widget::on_up_clicked()
{
timerUp->start(1);
timerDown->stop();
(4)向工程中添加Qt设计师界面类(模板为Dialog without Buttons)子对话框资源,命名为“Dialog”,修改标题为“窗口标题”,向设计界面添加一个Group Box控件,设置标题为“子标题”,向Group Box控件中添加一个进度条控件,界面设计如图。
(3)进度具有加速、减速、停止功能,如图所示。
(4)运行界面友好简洁。
主界面
子界面
4.实验步骤及代码
(1)启动Qt Creator,创建基于对话框的Qt Widgets Application类型的应用程序,命名为ProSelf。
(2)修改对话框标题为“进度指示器”。在主界面窗口中添加5个按钮控件,三个静态文本控件,和一个进度条控件,界面设计如图所示。
答:实时监控当前进度的变化,当当前的进度达到一半(50%)时,根据计算对应的坐标即可控制上层中间红底白字编辑框的动态显示。
(2)若采用动态控件数组,如何实现4个动态编辑框的创建和控制?
答:在开始按钮点击后,根据当前的进度,计算对应的速度,分别创建并用动态控件的4个编辑框动态显示当前的信息即可。
return;
}
ui->progressBar->setValue(i);
i+=DOWN;
emit sendValue(i);
ui->label_2->setText("1");
}
//停止
void Widget::on_stop_clicked()
{
ui->start->setEnabled(true);
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);
//红底
ui->progressBar->setStyleSheet("QProgressBar::chunk { background-color: rgb(255, 0, 0) }");
timerStart=new QTimer(this);
timerUp=new QTimer(this);
timerDown=new QTimer(this);
}
//关闭
void Widget::on_Close_clicked()
{
this->close();
dialog->close();
}
5.结果截图
初始界面
开始界面
加速界面
减速界面
6.回答思考题
(1)为了实现进度值的渐变反色显示,在CreateUpEdit函数中如何控制上层中间红底白字编辑框的动态显示?
{
ui->progressBar->setValue(MAXSIZE-1);
emit sendValue(MAXSIZE-1);
timerStart->stop();
QMessageBox::information(this,tr("提示"),tr("结束!"),QMessageBox::Ok|QMessageBox::Default);
connect(timerStart,SIGNAL(timeout()),this,SLOT(on_start_clicked()));
connect(timerUp,SIGNAL(timeout()),this,SLOT(on_up_clicked()));
connect(timerDown,SIGNAL(timeout()),this,SLOT(on_down_clicked()));
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);
(5)在ProgBar.h添加如下代码:
//声明槽
private slots:
void on_start_clicked();//开始
void on_up_clicked();//加速
void on_down_clicked();//减速
void on_stop_clicked();//停止
void on_Close_clicked();//关闭
ui->down->setEnabled(false);
ui->stop->setEnabled(false);
(7)分别为五个PushButton添加信号对应的槽(类似消息响应函数),代码如下:
//开始
void Widget::on_start_clicked()
{
ui->start->setEnabled(false);
return;
}
ui->progressBar->setValue(i);
i+=UP;
emit sendValue(i);
ui->label_2->setText("7");
}
//减速
void Widget::on_down_clicked()
{
timerDown->start(1);
timerStart->stop(分析
实验名称进度指示器制作
班级
学号
姓名
成绩
指导教师
实验日期
1.实验目的
(1)理解自定义进度指示器的设计原理。
(2)理解进度百分比反色显示实现原理。
(3)了解熟悉Qt Creator开发环境及相关控件的使用。
(4)了解信号和槽的关联及作用。
(5)熟练掌握QTimer定时器的使用方法。
(6)主界面类构造函数中进行成员变量的初始化。示例代码如下:
this->setFixedSize(width(),height());
ui->progressBar->setValue(0);//初始值为0
ui->progressBar->setRange(0,MAXSIZE-1);//设置进度条值的范围
signals:
void sendValue(int);//传值
private:
Ui::Widget *ui;
int i;//变量
QTimer *timerStart;//开始定时器
QTimer *timerUp;//加速定时器
QTimer *timerDown;//减速定时器
Dialog *dialog;//子对话框
(6)掌握动态控件的创建和使用方法。
(7)掌握嵌入子对话框的实现方法。
2.实验环境
Qt Creator + MinGW 4.9 (32-bit),Windows7,4G内存,DELL笔记本一台。
3.实验要求
(1)进度条未完成进度为白底红(或其他颜色)字。
(2)进度条已完成进度为红(或其他颜色)底白字。
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);
ui->up->setEnabled(false);
ui->down->setEnabled(false);
ui->stop->setEnabled(false);
timerStart->stop();
timerDown->stop();
timerUp->stop();
ui->label_2->setText("0");
ui->up->setEnabled(true);
ui->down->setEnabled(true);
ui->stop->setEnabled(true);
timerStart->start(1);
timerUp->stop();
timerDown->stop();
if(i >=MAXSIZE-1 )
return;
}
//赋值
ui->progressBar->setValue(i);
i+=I;
emit sendValue(i);
ui->label_2->setText("4");
}
//加速
void Widget::on_up_clicked()
{
timerUp->start(1);
timerDown->stop();