QProgressDialog Class
QProgressDialog クラスは、処理に時間がかかる操作の進行状況に関するフィードバックを提供します。詳細...
| ヘッダー: | #include <QProgressDialog> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QDialog |
- 継承されたメンバーを含むすべてのメンバーの一覧
- QProgressDialog はStandard Dialogs の一部です。
プロパティ
|
パブリック関数
| 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() を使用してください。なお、setMaximum() またはsetRange() を使用して、現在のvalue() と等しい新しい最大値を設定した場合、ダイアログは閉じられません。
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() 関数は、表示されるテキストを設定します。

QDialog およびQProgressBarも参照してください 。
プロパティのドキュメント
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 : int
このプロパティには、プログレスバーが示す最小値が格納されます
デフォルト値は 0 です。
アクセス関数:
| int | minimum() const |
| void | setMinimum(int minimum) |
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) |
[read-only] wasCanceled : bool
このプロパティは、ダイアログがキャンセルされたかどうかを示します
Access 関数:
| bool | wasCanceled() const |
メンバー関数のドキュメント
[explicit] QProgressDialog::QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
進行状況ダイアログを作成します。
デフォルト設定:
- ラベルのテキストは空です。
- 「キャンセル」ボタンのテキストは(翻訳済み)「キャンセル」です。
- 最小値は 0、
- maximumは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(0)、setValue(2) などを呼び出し、最後のファイルの検査終了後にsetValue(50) を呼び出します。
引数 `parent ` は、ダイアログの親ウィジェットです。親ウィジェット `parent` およびウィジェットフラグ `f` は、QDialog::QDialog() コンストラクタに渡されます。
setLabelText()、setLabel()、setCancelButtonText()、setCancelButton()、setMinimum()、およびsetMaximum()も参照してください 。
[virtual noexcept] QProgressDialog::~QProgressDialog()
進行状況ダイアログを閉じます。
[slot] void QProgressDialog::cancel()
進行状況ダイアログをリセットします。進行状況ダイアログがリセットされるまで、wasCanceled() の値は true になります。進行状況ダイアログは非表示になります。
[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()シグナルを、receiver およびmember で指定されたスロットに接続します。
ダイアログが閉じられると、このシグナルはスロットから切り離されます。
[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 」に設定します。進行状況ダイアログがこのボタンの所有権を取得し、必要に応じて削除するため、スタック上にあるオブジェクトのアドレスを渡さないでください。つまり、new() を使用してボタンを作成してください。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)
進行状況ダイアログの最小値と最大値を、それぞれminimum およびmaximum に設定します。
maximum がminimum より小さい場合、minimum が唯一の有効な値となります。
現在の値が新しい範囲外にある場合、進行状況ダイアログはreset() によってリセットされます。
[override virtual protected] void QProgressDialog::showEvent(QShowEvent *e)
QDialog::showEvent (QShowEvent *event)を再実装します。
[override virtual] QSize QProgressDialog::sizeHint() const
QDialog::sizeHint() const を再実装します。
プログレスダイアログの内容に収まるサイズを返します。プログレスダイアログは必要に応じて自動的にサイズ変更を行うため、この関数を自ら呼び出す必要はありません。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.