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() を使用します。現在の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() は、表示されるテキストを設定します。
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() に設定する必要があります。
警告 警告:プログレス・ダイアログがモーダルな場合(QProgressDialog::QProgressDialog() を参照)、setValue() はQCoreApplication::processEvents() を呼び出すので、コード内で望ましくないリエントランシーが発生しないように注意してください。例えば、paintEvent() の中でQProgressDialog を使用しないでください!
関数にアクセスしてください:
int | value() const |
void | setValue(int progress) |
[read-only]
wasCanceled : const bool
このプロパティは、ダイアログがキャンセルされたかどうかを保持する。
関数にアクセスします:
bool | wasCanceled() const |
メンバ関数ドキュメント
[explicit]
QProgressDialog::QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
進捗ダイアログを作成します。
デフォルト設定:
- ラベルテキストは空です。
- キャンセルボタンのテキストは(翻訳済み)"Cancel "です。
- 最小値は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() シグナルを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 に設定します。プログレス・ダイアログがこのボタンの所有権を持ち、必要なときに削除されるので、スタック上にあるオブジェクトのアドレスを渡さないでください。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.
プログレスダイアログの内容に合うサイズを返します。プログレスダイアログは必要に応じて自分自身のサイズを変更するので、自分でこれを呼び出す必要はありません。
© 2025 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.