日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习:进度条

發(fā)布時間:2024/9/30 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT学习:进度条 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一般來說,在處理長時間任務時需要提供進度條用于顯示時間,告訴用戶當前任務的進展情況。進度條對話框的使用方法有模態(tài)方式與非模態(tài)方式兩種。相比之下模態(tài)方式的使用比較簡單方便,但必須使用AplaicotoprocessEventSt使事件循環(huán)保持正常進行狀態(tài),以確保應用不會被阻塞。非模態(tài)方式是通過QTime實現(xiàn)定時設置進度條的值。QTime類的用法我們在后面將會講解。
Qt提供了兩種顯示進度條的方式
(1)QProgressBar :提供了一種橫向或縱向顯示進度的控件表示方式,用來描述任務的完成情況。
(2)QProgressDialog :提供了一種針對慢速過程的進度對話框表示方式,用于描述任務完成的進度情況。標準的進度條對話框包括一個進度顯示條、一個“取消” 按鈕及一個標簽。
下面讓我們用代碼來詳細展示:
頭文件代碼:

#ifndef PROGRESSDLG_H #define PROGRESSDLG_H#include <QDialog> #include <QLabel> #include <QLineEdit> #include <QProgressBar> #include <QComboBox> #include <QPushButton> #include <QGridLayout> class ProgressDlg : public QDialog {Q_OBJECTpublic:ProgressDlg(QWidget *parent = 0);~ProgressDlg(); private slots:void startProgress(); private:QLabel *FileNum;QLineEdit *FileNumLineEdit;QLabel *ProgressType;QComboBox *comboBox;QProgressBar *progressBar;QPushButton *starBtn;QGridLayout *mainLayout; }; #endif // PROGRESSDLG_H

cpp文件代碼:

#include "progressdlg.h" #include <QProgressDialog> #include <QFont> ProgressDlg::ProgressDlg(QWidget *parent): QDialog(parent) {QFont font("ZYSong18030",12);setFont(font);setWindowTitle(tr("Progress"));FileNum =new QLabel;FileNum->setText(tr("文件數(shù)目:"));FileNumLineEdit =new QLineEdit;FileNumLineEdit->setText(tr("100000"));ProgressType =new QLabel;ProgressType->setText(tr("顯示類型:"));comboBox =new QComboBox;comboBox->addItem(tr("progressBar"));comboBox->addItem(tr("progressDialog"));progressBar =new QProgressBar;starBtn =new QPushButton();starBtn->setText(tr("開始"));mainLayout =new QGridLayout(this);mainLayout->addWidget(FileNum,0,0);mainLayout->addWidget(FileNumLineEdit,0,1);mainLayout->addWidget(ProgressType,1,0);mainLayout->addWidget(comboBox,1,1);mainLayout->addWidget(progressBar,2,0,1,2);mainLayout->addWidget(starBtn,3,1);mainLayout->setMargin(15);mainLayout->setSpacing(10);connect(starBtn,SIGNAL(clicked()),this,SLOT(startProgress())); }void ProgressDlg::startProgress() {bool ok;int num =FileNumLineEdit->text().toInt(&ok);//獲取當前需要復制的文件數(shù)目if(comboBox->currentIndex()==0) //采用進度條的方式顯示進度{progressBar->setRange(0,num); //設置進度條的范圍從0到需要復制的文件數(shù)目for(int i=1;i<num+1;i++){progressBar->setValue(i); //模擬每一個文件的復制過程}}else if(comboBox->currentIndex()==1) //采用進度對話框顯示進度{//創(chuàng)建一個進度對話框QProgressDialog *progressDialog=new QProgressDialog(this);QFont font("ZYSong18030",12);progressDialog->setFont(font);progressDialog->setWindowModality(Qt::WindowModal); //設置進度對話框采用模態(tài)方式進行顯示,即在顯示進度的同時,其它窗口將不響應輸入信號progressDialog->setMinimumDuration(5); //設置進度對話框出現(xiàn)需等待的時間,此出設定為5s,默認為4sprogressDialog->setWindowTitle(tr("Please Wait")); //設置進度對話框的窗體標題progressDialog->setLabelText(tr("Copying...")); //設置進度對話框的顯示文字信息progressDialog->setCancelButtonText(tr("Cancel")); //設置進度對話框”取消“按鈕的文字progressDialog->setRange(0,num); //設置進度對話框的步進范圍for(int i=1;i<num+1;i++){progressDialog->setValue(i); //模擬每個文件的復制過程,進度條總的步進值為需要復制的文件數(shù)目。當復制完一個文件后,步進值加1if(progressDialog->wasCanceled()) //檢測”取消“按鈕是否被觸發(fā),若觸發(fā)則退出循壞并關(guān)閉進度對話框。return;}} }ProgressDlg::~ProgressDlg() {}


總結(jié)

以上是生活随笔為你收集整理的QT学习:进度条的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。