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は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も参照してください 。
プロパティ 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) |
[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() シグナルを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
再リンプルメント: (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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。