QRunnable Class
QRunnable クラスは、すべての実行可能オブジェクトの基底クラスです。詳細...
| ヘッダー: | #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 を使用すると、別のスレッドでコードを実行することができます。QThreadPool は、autoDelete() がtrue (デフォルト)を返した場合、QRunnable を自動的に削除します。自動削除フラグを変更するには、setAutoDelete() を使用してください。
QThreadPool run() 関数内から (this) を呼び出すことで、同じ QRunnable を複数回実行することをサポートしています。 が有効になっている場合、最後のスレッドが run 関数を終了した時点で QRunnable は削除されます。 が有効になっている状態で、同じ QRunnable に対して () を複数回呼び出すと、競合状態が発生するため、推奨されません。QThreadPool::tryStart autoDelete autoDelete QThreadPool::start
QThreadPoolも参照してください 。
メンバ関数のドキュメント
[constexpr noexcept default] QRunnable::QRunnable()
QRunnable オブジェクトを生成します。デフォルトでは自動削除が有効になっています。
autoDelete() およびsetAutoDelete()も参照してください 。
[virtual noexcept] QRunnable::~QRunnable()
QRunnable 仮想デストラクタ。
bool QRunnable::autoDelete() const
自動削除が有効になっている場合はtrue を返し、そうでない場合はfalseを返します。
自動削除が有効になっている場合、QThreadPool はrun()を呼び出した後にこの実行可能オブジェクトを自動的に削除します。そうでない場合、所有権はアプリケーションプログラマに残ります。
setAutoDelete() およびQThreadPoolも参照してください 。
[static] template <typename Callable> requires if_callable<Callable> QRunnable *QRunnable::create(Callable &&callableToRun)
run() 内のcallableToRun を呼び出すQRunnable を作成します。
デフォルトでは自動削除が有効になっています。
注: Qt 6.6 以前のバージョンでは 、このメソッドはコピー可能な関数のみを受け付けていました。
制約
Callable が引数 0 で呼び出せる関数または関数オブジェクトである場合にのみ、オーバーロード解決の対象となります。
run() およびautoDelete()も参照してください 。
[pure virtual] void QRunnable::run()
この純粋仮想関数をサブクラスで実装してください。
void QRunnable::setAutoDelete(bool autoDelete)
autoDelete がtrueの場合、自動削除が有効になります。それ以外の場合は、自動削除は無効になります。
自動削除が有効になっている場合、QThreadPool はrun() を呼び出した後にこの実行可能オブジェクトを自動的に削除します。そうでない場合は、所有権はアプリケーションプログラマに残ります。
このフラグは、QThreadPool::start() を呼び出す前に設定する必要があることに注意してください。QThreadPool::start() の後にこの関数を呼び出すと、未定義の挙動となります。
autoDelete() およびQThreadPoolも参照してください 。
© 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.