读书人

进度条使用方法,该如何解决

发布时间: 2012-10-19 16:53:37 作者: rapoo

进度条使用方法
Qt的进步条,跟MFC进度条用法大同小异吧;
我想在button_clicked事件执行的时候,同时弹出 进度条,进度条显示当前事件执行情况,当事件完成时进度条当然也100%了,这个应该如何设计呢?

[解决办法]
这个主要使用回调的做法就可以了,大意就是,在你的工作方法中调用一个事先规定好的方法来通知外界工作进度是多少。例如:

C/C++ code
// 回调方法接口定义void (progressCallback)(float progress);// 具体的回调方法void progressPrint (float progress) {    cout<<"progress:"<<progress;}void doWork(progressCallback method) {    for (int i=1; i<=100; ++i) {        // do some calculation        method((float)i);    }}int main() {    doWork(progressPrint);    return 0;}
[解决办法]
内容比较多,还是先看看资料吧:


在QT中可以用QProgressBar或着QProgressDialog来实现进度条:
http://www.cnblogs.com/feisky/archive/2010/06/17/1759654.html

[解决办法]
C/C++ code
class Progress {    virtual void onProgress(float value) = 0;};class ProgressPrinter : public Progress {    void onProgress(float value) {        cout<<"progress"<<value;    }};class Worker {    void doWork(Progress& progress) {         for (int i=1; i<=100; ++i) {            // do some calculation           progress->onProgress((float)i);        }     }};void button_clicked(...) {    Worker* worker = new Worker();    ProgressPrinter printer;    worker->doWork(printer);}
[解决办法]
Qt有一个机制叫做signal and slot,很容易使用,你读过以后大概就知道要怎么写了

随手写一些,没编译过
C/C++ code
void mainWindow::create_connection(){  connect(button, SIGNAL(clicked()), this, SLOT(show_progress()) );}void mainWindow::show_progress(){  download_progress_bar_->setValue(min);  download_progress_bar_->setRange(min, max);  download_progress_bar_->setVisible(true);    set_progress_value(); //你可以在这里设定你的进度条的进度} 

读书人网 >C++

热点推荐