QProgressDialog 類

The QProgressDialog class provides feedback on the progress of a slow operation. 更多...

頭: #include <QProgressDialog>
qmake: QT += widgets
繼承: QDialog

特性

公共函數

QProgressDialog (QWidget * parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
QProgressDialog (const QString & labelText , const QString & cancelButtonText , int minimum , int maximum , QWidget * parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
~QProgressDialog ()
bool autoClose () const
bool autoReset () const
QString labelText () const
int maximum () const
int minimum () const
int minimumDuration () const
void open (QObject * receiver , const char * member )
void setAutoClose (bool close )
void setAutoReset (bool reset )
void setBar (QProgressBar * bar )
void setCancelButton (QPushButton * cancelButton )
void setLabel (QLabel * label )
int value () const
bool wasCanceled () const

重實現公共函數

virtual QSize sizeHint () const

公共槽

void cancel ()
void reset ()
void setCancelButtonText (const QString & cancelButtonText )
void setLabelText (const QString & text )
void setMaximum (int maximum )
void setMinimum (int minimum )
void setMinimumDuration (int ms )
void setRange (int minimum , int maximum )
void setValue (int progress )

信號

void canceled ()

重實現保護函數

virtual void changeEvent (QEvent * ev )
virtual void closeEvent (QCloseEvent * e )
virtual void resizeEvent (QResizeEvent * event )
virtual void showEvent (QShowEvent * e )

保護槽

void forceShow ()

額外繼承成員

詳細描述

The QProgressDialog class provides feedback on the progress of a slow operation.

進度對話框用於給予用戶操作將花費多長時間的指示,並演示應用程序末被凍結。它還可以讓用戶,有機會中止操作。

A common problem with progress dialogs is that it is difficult to know when to use them; operations take different amounts of time on different hardware. QProgressDialog offers a solution to this problem: it estimates the time the operation will take (based on time for steps), and only shows itself if that estimate is beyond minimumDuration () (默認 4 秒)。

使用 setMinimum () 和 setMaximum () 或構造函數,可以設置操作步數和調用 setValue () 作為操作進度。步數可以任選。它可以是拷貝文件數、收到字節數、透過主循環算法的迭代次數,或其它閤適單位。進度起始值的設置通過 setMinimum (),且進度對話框展示操作已完成,當調用 setValue () 采用值設置通過 setMaximum () 作為其自變量。

對話框在操作結束時自動重置並隱藏本身。使用 setAutoReset () 和 setAutoClose () 能改變這種行為。注意:若設置新的最大 (使用 setMaximum () 或 setRange ()) that equals your current value (),對話框將不會被關閉 (不管怎樣)。

There are two ways of using QProgressDialog : modal and modeless.

Compared to a modeless QProgressDialog , a modal QProgressDialog is simpler to use for the programmer. Do the operation in a loop, call setValue () 不時,並校驗是否取消采用 wasCanceled ()。例如:

    QProgressDialog progress("Copying files...", "Abort Copy", 0, numFiles, this);
    progress.setWindowModality(Qt::WindowModal);
    for (int i = 0; i < numFiles; i++) {
        progress.setValue(i);
        if (progress.wasCanceled())
            break;
        //... copy one file
    }
    progress.setValue(numFiles);
					

A modeless progress dialog is suitable for operations that take place in the background, where the user is able to interact with the application. Such operations are typically based on QTimer (或 QObject::timerEvent ()), QSocketNotifier , or QUrlOperator; or performed in a separate thread. A QProgressBar 在主窗口狀態欄中,經常是非模態進度對話框的替代。

需要以事件循環來運行,連接 canceled () 信號到操作停止槽,和調用 setValue () 不時。例如:

// Operation constructor
Operation::Operation(QObject *parent)
    : QObject(parent), steps(0)
{
    pd = new QProgressDialog("Operation in progress.", "Cancel", 0, 100);
    connect(pd, SIGNAL(canceled()), this, SLOT(cancel()));
    t = new QTimer(this);
    connect(t, SIGNAL(timeout()), this, SLOT(perform()));
    t->start(0);
}
void Operation::perform()
{
    pd->setValue(steps);
    //... perform one percent of the operation
    steps++;
    if (steps > pd->maximum())
        t->stop();
}
void Operation::cancel()
{
    t->stop();
    //... cleanup
}
					

這 2 種模式,都可以通過采用自定義小部件替換子級 Widget 以定製進度對話框,通過使用 setLabel (), setBar (),和 setCancelButton ()。函數 setLabelText () 和 setCancelButtonText () 設置展示文本。

A progress dialog shown in the Fusion widget style.

另請參閱 QDialog , QProgressBar , GUI 設計手冊:進度指示器 , 查找文件範例 ,和 像素器範例 .

特性文檔編製

autoClose : bool

此特性保持對話框是否獲得隱藏,通過 reset ()

默認為 true。

訪問函數:

bool autoClose () const
void setAutoClose (bool close )

另請參閱 setAutoReset ().

autoReset : bool

此特性保持進度對話框是否調用 reset () 盡快 value () 等於 maximum ()

默認為 true。

訪問函數:

bool autoReset () const
void setAutoReset (bool reset )

另請參閱 setAutoClose ().

labelText : QString

此特性保持標簽的文本

默認文本為空字符串。

訪問函數:

QString labelText () const
void setLabelText (const QString & text )

maximum : int

此特性保持由進度條錶示的最高值

默認為 100。

訪問函數:

int maximum () const
void setMaximum (int maximum )

另請參閱 minimum and setRange ().

minimum : int

此特性保持由進度條錶示的最低值

默認為 0。

訪問函數:

int minimum () const
void setMinimum (int minimum )

另請參閱 maximum and setRange ().

minimumDuration : int

此特性保持對話框齣現前,必須經過的時間

If the expected duration of the task is less than the minimumDuration, the dialog will not appear at all. This prevents the dialog popping up for tasks that are quickly over. For tasks that are expected to exceed the minimumDuration, the dialog will pop up after the minimumDuration time or as soon as any progress is set.

若設為 0,始終一設置任何進度,就會盡快展示對話框。默認為 4000 毫秒。

訪問函數:

int minimumDuration () const
void setMinimumDuration (int ms )

value : int

此特性保持當前已取得的進度數量。

為使進度對話框如期望般工作,應把此特性初始設為 QProgressDialog::minimum () 並把它最終設為 QProgressDialog::maximum ();可以調用 setValue() 任意多次在兩者之間。

警告: 若進度對話框是模態的 (見 QProgressDialog::QProgressDialog ()),setValue() 調用 QApplication::processEvents (), so take care that this does not cause undesirable re-entrancy in your code. For example, don't use a QProgressDialog paintEvent ()!

訪問函數:

int value () const
void setValue (int progress )

另請參閱 minimum and maximum .

wasCanceled : const bool

此特性保持對話框是否被取消

訪問函數:

bool wasCanceled () const

成員函數文檔編製

QProgressDialog:: QProgressDialog ( QWidget * parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

構造進度對話框。

默認設置:

  • 標簽文本為空。
  • 取消按鈕文本是 (翻譯) Cancel。
  • 最小為 0;
  • 最大為 100

The parent argument is dialog's parent widget. The widget flags, f , are passed to the QDialog::QDialog () 構造函數。

另請參閱 setLabelText (), setCancelButtonText (), setCancelButton (), setMinimum (),和 setMaximum ().

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

構造進度對話框。

The labelText 是用於提醒用戶進展如何的文本。

The cancelButtonText 是要在取消按鈕上顯示的文本。若傳遞的是 QString(),則不展示取消按鈕。

The minimum and maximum is the number of steps in the operation for which this progress dialog shows progress. For example, if the operation is to examine 50 files, this value minimum value would be 0, and the maximum would be 50. Before examining the first file, call setValue (0). As each file is processed call setValue (1), setValue (2), etc., finally calling setValue (50) after examining the last file.

The parent argument is the dialog's parent widget. The parent, parent , and widget flags, f , are passed to the QDialog::QDialog () 構造函數。

另請參閱 setLabelText (), setLabel (), setCancelButtonText (), setCancelButton (), setMinimum (),和 setMaximum ().

QProgressDialog:: ~QProgressDialog ()

銷毀進度對話框。

[slot] void QProgressDialog:: cancel ()

重置進度對話框。 wasCanceled () 變為 true,直到進度對話框被重置。進度對話框變為隱藏。

[signal] void QProgressDialog:: canceled ()

此信號發射,當點擊取消按鈕時。它被連接到 cancel () 槽,默認情況下。

另請參閱 wasCanceled ().

[virtual protected] void QProgressDialog:: changeEvent ( QEvent * ev )

重實現自 QWidget::changeEvent ().

[virtual protected] void QProgressDialog:: closeEvent ( QCloseEvent * e )

重實現自 QWidget::closeEvent ().

[protected slot] void QProgressDialog:: forceShow ()

展示,若算法啓動後對話框仍隱藏且 minimumDuration 毫秒已過去。

另請參閱 setMinimumDuration ().

void QProgressDialog:: open ( QObject * receiver , const char * member )

這是重載函數。

打開對話框並連接其 canceled () 信號到槽,指定通過 receiver and member .

將從槽斷開信號連接,當關閉對話框時。

該函數在 Qt 4.5 引入。

[slot] void QProgressDialog:: reset ()

重置進度對話框。進度對話框變為隱藏,若 autoClose () 為 true。

另請參閱 setAutoClose () 和 setAutoReset ().

[virtual protected] void QProgressDialog:: resizeEvent ( QResizeEvent * event )

重實現自 QWidget::resizeEvent ().

void QProgressDialog:: setBar ( QProgressBar * bar )

將進度欄小部件設為 bar 。進度對話框會重置大小以擬閤。進度對話框擁有其所有權對於進度 bar 會被刪除當有必要時,因此不要使用分配在堆棧中的進度條。

void QProgressDialog:: setCancelButton ( QPushButton * cancelButton )

將取消按鈕設為 Push Button (按鈕) cancelButton . The progress dialog takes ownership of this button which will be deleted when necessary, so do not pass the address of an object that is on the stack, i.e. use new() to create the button. If 0 is passed then no cancel button will be shown.

另請參閱 setCancelButtonText ().

[slot] void QProgressDialog:: setCancelButtonText (const QString & cancelButtonText )

將取消按鈕的文本設為 cancelButtonText 。若文本被設為 QString(),它將導緻取消按鈕被隱藏並被刪除。

另請參閱 setCancelButton ().

void QProgressDialog:: setLabel ( QLabel * label )

把標簽設為 label 。進度對話框會重置大小以擬閤。標簽變為由進度對話框所有,且會被刪除當有必要時,因此,不要把對象地址傳遞給堆棧。

另請參閱 setLabelText ().

[slot] void QProgressDialog:: setRange ( int minimum , int maximum )

Sets the progress dialog's minimum and maximum values to minimum and maximum ,分彆。

maximum < minimum , minimum 變為唯一閤法值。

If the current value falls outside the new range, the progress dialog is reset with reset ().

另請參閱 minimum and maximum .

[virtual protected] void QProgressDialog:: showEvent ( QShowEvent * e )

重實現自 QWidget::showEvent ().

[虛擬] QSize QProgressDialog:: sizeHint () const

重實現自 QWidget::sizeHint ().

Returns a size that fits the contents of the progress dialog. The progress dialog resizes itself as required, so you should not need to call this yourself.