QProgressDialog进度条类

QProgressDialog

  • 常用API
  • 简单的使用

QProgressDialog类是QDialog的子类, 通过这个类我们可以得到一个带进度条的对话框窗口

常用API

// 构造函数
/*
参数:
  - labelText: 对话框中显示的提示信息
  - cancelButtonText: 取消按钮上显示的文本信息
  - minimum: 进度条最小值
  - maximum: 进度条最大值
  - parent: 当前窗口的父对象
  - f: 当前进度窗口的flag属性, 使用默认属性即可, 无需设置
*/
QProgressDialog::QProgressDialog(
	QWidget *parent = nullptr, 
	Qt::WindowFlags f = Qt::WindowFlags());

QProgressDialog::QProgressDialog(
	const QString &labelText, const QString &cancelButtonText, 
	int minimum, int maximum, QWidget *parent = nullptr,
	Qt::WindowFlags f = Qt::WindowFlags());


// 设置取消按钮显示的文本信息
[slot] void QProgressDialog::setCancelButtonText(const QString &cancelButtonText);

// 公共成员函数和槽函数
QString QProgressDialog::labelText() const;
void QProgressDialog::setLabelText(const QString &text);

// 得到进度条最小值
int QProgressDialog::minimum() const;
// 设置进度条最小值
void QProgressDialog::setMinimum(int minimum);

// 得到进度条最大值
int QProgressDialog::maximum() const;
// 设置进度条最大值
void QProgressDialog::setMaximum(int maximum);

// 设置进度条范围(最大和最小值)
[slot] void QProgressDialog::setRange(int minimum, int maximum);

// 得到进度条当前的值
int QProgressDialog::value() const;
// 设置进度条当前的值
void QProgressDialog::setValue(int progress);


bool QProgressDialog::autoReset() const;
// 当value() = maximum()时,进程对话框是否调用reset(),此属性默认为true。
void QProgressDialog::setAutoReset(bool reset);


bool QProgressDialog::autoClose() const;
// 当value() = maximum()时,进程对话框是否调用reset()并且隐藏,此属性默认为true。
void QProgressDialog::setAutoClose(bool close);

// 判断用户是否按下了取消键, 按下了返回true, 否则返回false
bool wasCanceled() const;


// 重置进度条
// 重置进度对话框。wascancelled()变为true,直到进程对话框被重置。进度对话框被隐藏。
[slot] void QProgressDialog::cancel();
// 重置进度对话框。如果autoClose()为真,进程对话框将隐藏。
[slot] void QProgressDialog::reset();   

// 信号
// 当单击cancel按钮时,将发出此信号。默认情况下,它连接到cancel()槽。
[signal] void QProgressDialog::canceled();

// 设置窗口的显示状态(模态, 非模态)
/*
参数:
	Qt::NonModal  -> 非模态
	Qt::WindowModal	-> 模态, 阻塞父窗口
	Qt::ApplicationModal -> 模态, 阻塞应用程序中的所有窗口
*/
void QWidget::setWindowModality(Qt::WindowModality windowModality);

简单的使用

void MainWindow::on_pushButton1_clicked()
{
    // 1 构造进度条对象
    QProgressDialog* q1 = new QProgressDialog(
        this,
        Qt::WindowFlags());
    // 2 初始化并显示进度条
    q1->setCancelButtonText("取消下载");
    q1->setLabelText("正在下载");
    q1->setMinimum(0);
    q1->setMaximum(50);
    q1->setValue(10);
    q1->setAutoReset(true);
    q1->setWindowTitle("请稍等,正在下载");
    q1->show();
    // 3 更新进度条
    static int val = 0;
    QTimer* t1 = new QTimer(this);
    t1->start(20);
    connect(t1,&QTimer::timeout,this,[=]{
       q1->setValue(val);
       val++;
        //终止条件
       if(val>q1->maximum()){
           t1->stop();
           val = 0;
       }
    });



}

void MainWindow::on_pushButton2_clicked()
{
    // 1 构造进度条对象
    QProgressDialog* q1 = new QProgressDialog(
        "进度条对话框", "取消当前进度条",
        0, 100, this,
        Qt::WindowFlags());
    // 2 初始化并显示进度条
    q1->setAutoClose(true);
    q1->setWindowTitle("进度条窗口的标题");
    q1->setAutoClose(false);    //当value() = maximum()时,进程对话框是否调用reset()并且隐藏
    q1->show();
    // 3 更新进度条
    static int val = 0;
    QTimer* t1 = new QTimer(this);
    t1->start(20);
    connect(t1,&QTimer::timeout,this,[=]{
       q1->setValue(val);
       val++;
        //终止条件
       if(val>q1->maximum()){
           t1->stop();
           val = 0;
       }
    });


}

void MainWindow::on_pushButton3_clicked()
{
    // 1 构造进度条对象
    QProgressDialog* q1 = new QProgressDialog(
        "进度条对话框", "取消当前进度条",
        0, 100, this,
        Qt::WindowFlags());
    // 2 初始化并显示进度条
    q1->setAutoClose(true);
    q1->setWindowTitle("进度条窗口的标题");
    q1->setAutoClose(false);    //当value() = maximum()时,进程对话框是否调用reset()并且隐藏
    q1->show();
    // 3 更新进度条
    static int val = 0;
    QTimer* t1 = new QTimer(this);
    t1->start(20);
    connect(t1,&QTimer::timeout,this,[=]{
       q1->setValue(val);
       val++;
        //终止条件
       if(val>q1->maximum()){
           t1->stop();
           val = 0;
       }
    });
    connect(q1,&QProgressDialog::canceled,this,[=]{
        t1->stop();
        val = 0;

    });
}

void MainWindow::on_pushButton4_clicked()
{
    // 1 构造进度条对象
    QProgressDialog* q1 = new QProgressDialog(
        "进度条对话框", "取消当前进度条",
        0, 100, this,
        Qt::WindowFlags());
    // 2 初始化并显示进度条
    q1->setAutoClose(true);
    q1->setWindowTitle("进度条窗口的标题");
    q1->setAutoClose(false);    //当value() = maximum()时,进程对话框是否调用reset()并且隐藏
    /*
    参数:
        Qt::NonModal  -> 非模态
        Qt::WindowModal	-> 模态, 阻塞父窗口
        Qt::ApplicationModal -> 模态, 阻塞应用程序中的所有窗口
        设置窗口的显示状态(模态, 非模态)
    */
    q1->setWindowModality(Qt::WindowModal);
    q1->show();
    // 3 更新进度条
    static int val = 0;
    QTimer* t1 = new QTimer(this);
    t1->start(20);
    connect(t1,&QTimer::timeout,this,[=]{
       q1->setValue(val);
       val++;
        //终止条件
       if(val>q1->maximum()){
           t1->stop();
           val = 0;
       }
    });
    connect(q1,&QProgressDialog::canceled,this,[=]{
        t1->stop();
        val = 0;
        qDebug()<<"点击了取消按钮";

    });

第一个
QProgressDialog进度条类_第1张图片

第二个
QProgressDialog进度条类_第2张图片

第三个
QProgressDialog进度条类_第3张图片

第四个
QProgressDialog进度条类_第4张图片
在这里插入图片描述

你可能感兴趣的:(Qt开发,qt)