QRunnable Class
QRunnableクラスは全ての実行可能オブジェクトの基本クラスです。詳細...
Header: | #include <QRunnable> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承されたメンバーを含む全メンバーのリスト
- QRunnableはスレッドクラスに属しています。
パブリック関数
QRunnable() | |
virtual | ~QRunnable() |
bool | autoDelete() const |
virtual void | run() = 0 |
void | setAutoDelete(bool autoDelete) |
静的パブリック・メンバー
QRunnable * | create(Callable &&callableToRun) |
詳細説明
QRunnable クラスは、run() 関数の再実装によって表される、実行が必要なタスクやコードの一部を表すためのインターフェイスです。
QThreadPool を使用すると、コードを別のスレッドで実行できます。autoDelete() がtrue
(デフォルト) を返した場合、QThreadPool は QRunnable を自動的に削除します。自動削除フラグを変更するにはsetAutoDelete() を使用します。
QThreadPool run() 関数内から (this) を呼び出すことで、同じ QRunnable を複数回実行できます。 を有効にすると、最後のスレッドが run 関数を終了したときに QRunnable が削除されます。 が有効になっているときに、同じ QRunnable を使用して () を複数回呼び出すと、競合状態が発生するためお勧めできません。QThreadPool::tryStart autoDelete autoDelete QThreadPool::start
QThreadPoolも参照してください 。
メンバ関数ドキュメント
[constexpr noexcept]
QRunnable::QRunnable()
QRunnableを構築する。自動削除はデフォルトで有効になっています。
autoDelete() およびsetAutoDelete() も参照して ください。
[virtual noexcept]
QRunnable::~QRunnable()
QRunnable 仮想デストラクタ。
bool QRunnable::autoDelete() const
自動削除が有効な場合はtrue
を返し、そうでない場合は false を返します。
自動削除が有効な場合、run() を呼び出した後、QThreadPool はこの runnable を自動的に削除します。そうでない場合、所有権はアプリケーション・プログラマに残ります。
setAutoDelete() およびQThreadPoolも参照 。
[static]
template <typename Callable, QRunnable::if_callable<Callable> = true> QRunnable *QRunnable::create(Callable &&callableToRun)
run() でcallableToRun を呼び出すQRunnable を作成する。
自動削除はデフォルトで有効になっています。
注意: この関数は、Callable
が引数ゼロで呼び出せる関数または関数オブジェクトである場合にのみ、オーバーロードの解決に参加します。
注意 : Qt 6.6 より前のバージョンでは、このメソッドはコピー可能な関数のみを取りました。
run() およびautoDelete()も参照してください 。
[pure virtual]
void QRunnable::run()
この純粋な仮想関数をサブクラスで実装してください。
void QRunnable::setAutoDelete(bool autoDelete)
autoDelete が真であれば自動削除を有効にし、そうでなければ自動削除を無効にします。
自動削除が有効な場合、run() を呼び出した後、QThreadPool はこの runnable を自動的に削除します。そうでない場合、所有権はアプリケーション・プログラマに残ります。
このフラグは、QThreadPool::start ()を呼び出す前に設定する必要がある。QThreadPool::start() の後でこの関数を呼び出すと、未定義の動作になる。
autoDelete() およびQThreadPoolも参照してください 。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。