QProgressDialog Class

QProgressDialog クラスは、遅い操作の進行状況についてのフィードバックを提供します。詳細...

Header: #include <QProgressDialog>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QDialog

プロパティ

パブリック関数

QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
virtual ~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 override

パブリックスロット

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) override
virtual void closeEvent(QCloseEvent *e) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void showEvent(QShowEvent *e) override

保護されたスロット

void forceShow()

詳細説明

プログレスダイアログは、ユーザーに操作にかかる時間を知らせ、アプリケーションがフリーズしていないことを示すために使用されます。また、ユーザーに操作を中止する機会を与えることもできます。

プログレスダイアログの一般的な問題は、いつ使用すればよいかを知るのが難しいということです。QProgressDialogはこの問題に対する解決策を提供します:(ステップの時間に基づいて)操作にかかる時間を推定し、その推定時間がminimumDuration ()(デフォルトでは4秒)を超えた場合にのみ表示します。

setMinimum ()とsetMaximum ()、またはコンストラクタを使用して操作の「ステップ」数を設定し、操作の進行に応じてsetValue ()を呼び出す。ステップ数は任意に選択できます。コピーしたファイルの数、受信したバイト数、アルゴリズムのメイン・ループの繰り返し回数、またはその他の適切な単位を指定できます。進行はsetMinimum() で設定された値から始まり、setMaximum() で設定された値を引数としてsetValue() を呼び出すと、進行ダイアログに処理が終了したことが表示される。

操作が終了すると、ダイアログは自動的にリセットされ、非表示になります。この動作を変更するには、setAutoReset() およびsetAutoClose() を使用します。現在のvalue() と等しい新しい最大値を設定した場合(setMaximum() またはsetRange() を使用)、ダイアログは関係なく閉じないことに注意してください。

QProgressDialogには、モーダルとモードレスの2つの使用方法があります。

モードレスQProgressDialogに比べ、モーダルQProgressDialogはプログラマーにとって使いやすいものです。ループの中で操作を行い、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);

モードレス・プログレス・ダイアログは、バックグラウンドで行われる操作に適しています。このような操作は、通常、QChronoTimer (または、より低レベルのQObject::timerEvent ())やQSocketNotifier ;のようなタイマー・クラスに基づいているか、別のスレッドで実行されます。メイン・ウィンドウのステータス・バーに表示されるQProgressBar は、モードレス・プログレス・ダイアログの代替となることがよくあります。

イベントループを実行させ、canceled() シグナルを操作を停止するスロットに接続し、setValue() を間隔をおいて呼び出す必要があります。例えば

// Operation constructor
Operation::Operation(QObject *parent)
    : QObject(parent), steps(0)
{
    pd = new QProgressDialog("Operation in progress.", "Cancel", 0, 100);
    connect(pd, &QProgressDialog::canceled, this, &Operation::cancel);
    t = new QTimer(this);
    connect(t, &QTimer::timeout, this, &Operation::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
}

どちらのモードでも、setLabel()、setBar()、setCancelButton() を使用して子ウィジェットをカスタムウィジェットに置き換えることで、プログレス・ダイアログをカスタマイズできます。関数setLabelText() およびsetCancelButtonText() は、表示されるテキストを設定します。

A progress dialog shown in the Fusion widget style.

QDialog およびQProgressBarも参照してください

プロパティ Documentation

autoClose : bool

このプロパティは、reset() によってダイアログが隠されるかどうかを保持します。

デフォルトはtrueです。

アクセス関数:

bool autoClose() const
void setAutoClose(bool close)

setAutoReset()も参照

autoReset : bool

このプロパティは、value() がmaximum() と等しくなった時点で、プログレス・ダイアログがreset() を呼び出すかどうかを保持します。

デフォルトは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 およびsetRange()も参照してください

minimum : int

このプロパティは、プログレス・バーで表される最小値を保持します。

デフォルトは 0 です。

アクセス関数:

int minimum() const
void setMinimum(int minimum)

maximum およびsetRange() も参照して ください。

minimumDuration : int

このプロパティは、ダイアログが表示されるまでの経過時間を保持します。

タスクの予想継続時間がminimumDurationより短い場合、ダイアログは表示されません。これにより、すぐに終わるタスクでダイアログが表示されるのを防ぐことができます。minimumDurationを超えると予想されるタスクについては、minimumDurationの時間が経過するか、進捗が設定されるとすぐにダイアログがポップアップします。

0に設定すると、進捗が設定されるとすぐにダイアログが表示されます。デフォルトは4000ミリ秒です。

アクセス関数:

int minimumDuration() const
void setMinimumDuration(int ms)

value : int

このプロパティは、現在の進行状況を保持します。

進捗ダイアログを期待通りに動作させるには、このプロパティを最初にQProgressDialog::minimum() に設定し、最後にQProgressDialog::maximum() に設定する必要があります。その間に setValue() を何回でも呼び出すことができます。

警告 警告:プログレス・ダイアログがモーダルな場合(QProgressDialog::QProgressDialog() を参照)、setValue() はQCoreApplication::processEvents() を呼び出すので、コード内で望ましくないリエントランシーが発生しないように注意してください。例えば、paintEvent() の中でQProgressDialog を使用しないでください!

関数にアクセスしてください:

int value() const
void setValue(int progress)

minimum およびmaximumも参照してください

[read-only] wasCanceled : const bool

このプロパティは、ダイアログがキャンセルされたかどうかを保持します。

このプロパティは、ダイアログがキャンセルされたかどうかを保持します:

bool wasCanceled() const

メンバ関数 ドキュメント

[explicit] QProgressDialog::QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

進捗ダイアログを構築します。

デフォルト設定:

  • ラベルテキストは空です。
  • キャンセルボタンのテキストは「キャンセル」です。
  • 最小値は0;
  • 最大値は100

parent 引数はダイアログの親ウィジェットです。ウィジェットのフラグ、f は、QDialog::QDialog() コンストラクタに渡されます。

setLabelText()、setCancelButtonText()、setCancelButton()、setMinimum()、setMaximum()も参照してください

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

進行ダイアログを構築します。

labelText は、進行状況をユーザに知らせるためのテキストです。

cancelButtonText は、キャンセル・ボタンに表示するテキストです。QString()が渡された場合、キャンセル・ボタンは表示されません。

minimum およびmaximum は、この進行状況ダイアログが進行状況を表示する操作のステップ数です。例えば、50個のファイルを検査する操作の場合、この値の最小値は0、最大値は50になります。最初のファイルを検査する前に、setValue (0)を呼び出す。各ファイルが処理されるごとに、setValue(1)、setValue(2)などを呼び出し、最後に最後のファイルを検査した後、setValue(50)を呼び出す。

引数parent は、ダイアログの親ウィジェットである。親ウィジェットparent とウィジェット・フラグf は、QDialog::QDialog() コンストラクタに渡される。

setLabelText()、setLabel()、setCancelButtonText()、setCancelButton()、setMinimum()、setMaximum()も参照

[virtual noexcept] QProgressDialog::~QProgressDialog()

進行ダイアログを破棄します。

[slot] void QProgressDialog::cancel()

進行ダイアログをリセットする。wasCanceled() は進行ダイアログがリセットされるまで真になります。進行ダイアログは非表示になります。

[signal] void QProgressDialog::canceled()

このシグナルはキャンセルボタンがクリックされたときに発せられます。デフォルトではcancel() スロットに接続されています。

wasCanceled()も参照してください

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

再実装:QWidget::changeEvent(QEvent *event)。

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

再インプリメント:QDialog::closeEvent(QCloseEvent *e)。

[protected slot] void QProgressDialog::forceShow()

アルゴリズムが開始され、minimumDuration ミリ秒が経過してもダイアログが非表示の場合にダイアログを表示します。

setMinimumDuration()も参照

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

ダイアログを開き、そのcanceled() シグナルをreceivermember で指定されたスロットに接続します。

ダイアログが閉じられると、シグナルはスロットから切り離されます。

[slot] void QProgressDialog::reset()

進行ダイアログをリセットします。autoClose() が true の場合、プログレス・ダイアログは非表示になります。

setAutoClose() およびsetAutoReset()も参照してください

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

再実装:QDialog::resizeEvent(QResizeEvent *).

void QProgressDialog::setBar(QProgressBar *bar)

プログレス・バー・ウィジェットをbar に設定します。 プログレス・ダイアログのサイズが変更されます。プログレスダイアログは、必要なときに削除されるプログレスバーbar の所有権を取りますので、スタックに割り当てられたプログレスバーを使用しないでください。

void QProgressDialog::setCancelButton(QPushButton *cancelButton)

キャンセルボタンをプッシュボタンcancelButton に設定します。プログレスダイアログは、必要なときに削除されるこのボタンの所有権を取りますので、スタック上にあるオブジェクトのアドレスを渡さないでください。nullptr を渡すと、キャンセルボタンは表示されません。

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)

プログレスダイアログの最小値と最大値をそれぞれminimummaximum に設定します。

maximumminimum より小さい場合、minimum が唯一の正当な値となる。

現在の値が新しい範囲から外れる場合、進行状況ダイアログはreset() でリセットされます。

minimum およびmaximumも参照してください

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

再実装:QDialog::showEvent(QShowEvent *event)。

[override virtual] QSize QProgressDialog::sizeHint() const

再リンプルメント: (QShowEvent *event):QDialog::sizeHint() const.

プログレスダイアログの内容に合うサイズを返します。プログレスダイアログは必要に応じて自分自身でサイズを変更するので、自分でこれを呼び出す必要はありません。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。