QQmlExpression Class
QQmlExpression クラスは、QML のコンテキスト内で JavaScript を評価します。詳細...
| ヘッダー: | #include <QQmlExpression> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
| 継承元: | QObject |
パブリック関数
| QQmlExpression() | |
| QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = nullptr) | |
| QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = nullptr, QObject *scope = nullptr, QObject *parent = nullptr) | |
| virtual | ~QQmlExpression() override |
| void | clearError() |
| int | columnNumber() const |
| QQmlContext * | context() const |
| QQmlEngine * | engine() const |
| QQmlError | error() const |
| QVariant | evaluate(bool *valueIsUndefined = nullptr) |
| QString | expression() const |
| bool | hasError() const |
| int | lineNumber() const |
| bool | notifyOnValueChanged() const |
| QObject * | scopeObject() const |
| void | setExpression(const QString &expression) |
| void | setNotifyOnValueChanged(bool notifyOnChange) |
| void | setSourceLocation(const QString &url, int line, int column = 0) |
| QString | sourceFile() const |
シグナル
| void | valueChanged() |
詳細な説明
たとえば、次のようなファイル `main.qml ` があるとします。
import QtQuick 2.0
Item {
width: 200; height: 200
}次のコードは、上記の QML のコンテキストで JavaScript 式を評価します:
QQmlEngine *engine = new QQmlEngine;
QQmlComponent component(engine, QUrl::fromLocalFile("main.qml"));
QObject *myObject = component.create();
QQmlExpression *expr = new QQmlExpression(engine->rootContext(), myObject, "width * 2");
int result = expr->evaluate().toInt(); // result = 400メンバ関数のドキュメント
QQmlExpression::QQmlExpression()
無効なQQmlExpressionを作成します。
この式には関連付けられたQQmlContext が存在しないため、これはnullの式オブジェクトとなり、その値は常に無効なQVariant となります。
QQmlExpression::QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = nullptr)
parent の子となる QQmlExpression オブジェクトを作成します。
expression のJavaScriptは、ctxt QQmlContext 内で実行されます。指定された場合、scope オブジェクトのプロパティも、式の実行中にスコープ内となります。
[explicit] QQmlExpression::QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = nullptr, QObject *scope = nullptr, QObject *parent = nullptr)
parent の子となるQQmlExpressionオブジェクトを作成します。
script は、評価対象の式、評価を行うコンテキスト、および評価に使用するスコープオブジェクトを提供します。ctxt およびscope が指定された場合、それらはscript によって提供されるコンテキストおよびスコープオブジェクトを上書きします。
QQmlScriptStringも参照してください 。
[override virtual noexcept] QQmlExpression::~QQmlExpression()
QQmlExpression インスタンスを破棄します。
void QQmlExpression::clearError()
式のエラーをすべて解消します。これ以降にhasError()を呼び出しても、falseが返されます。
hasError() およびerror()も参照してください 。
int QQmlExpression::columnNumber() const
この式に対応するソースファイルの列番号を返します。ソースの位置は、事前にsetSourceLocation() を呼び出して設定しておく必要があります。
QQmlContext *QQmlExpression::context() const
この式に関連付けられているQQmlContext を返します。関連付けがない場合や、QQmlContext が破棄されている場合は、nullptr を返します。
QQmlEngine *QQmlExpression::engine() const
この式に関連付けられているQQmlEngine を返します。関連付けがない場合や、QQmlEngine が破棄されている場合は、nullptr を返します。
QQmlError QQmlExpression::error() const
evaluate() の直近の呼び出しで発生したエラーを返します。エラーが発生しなかった場合、この関数は無効なQQmlError インスタンスを返します。
hasError() およびclearError()も参照してください 。
QVariant QQmlExpression::evaluate(bool *valueIsUndefined = nullptr)
式を評価し、その評価結果を返します。式が無効であるか、エラーがある場合は、無効なQVariant を返します。
valueIsUndefined 式の結果が未定義値となった場合、is は true に設定されます。
hasError() およびerror()も参照してください 。
QString QQmlExpression::expression() const
式文字列を返します。
setExpression()も参照してください 。
bool QQmlExpression::hasError() const
evaluate() の直近の呼び出しでエラーが発生した場合は true を返し、それ以外の場合は false を返します。
error() およびclearError()も参照してください 。
int QQmlExpression::lineNumber() const
この式に対応するソースファイルの行番号を返します。ソース内の位置は、事前にsetSourceLocation() を呼び出して設定されている必要があります。
bool QQmlExpression::notifyOnValueChanged() const
式が評価された値が変化した際に、valueChanged() シグナルが発信される場合、true を返します。
setNotifyOnValueChanged()も参照してください 。
QObject *QQmlExpression::scopeObject() const
指定されている場合は、式スコープオブジェクトを返します。指定されていない場合は 0 を返します。
式がQQmlContext から提供するデータに加え、スコープオブジェクトのプロパティも、式の評価中はスコープ内に含まれます。
void QQmlExpression::setExpression(const QString &expression)
式を「expression 」に設定します。
「expression()」も参照してください 。
void QQmlExpression::setNotifyOnValueChanged(bool notifyOnChange)
式が評価された値が変化した際に、valueChanged() シグナルを発生させるかどうかを設定します。
notifyOnChange がtrueの場合、QQmlExpression は式の評価に関与するプロパティを監視し、それらが変更された場合にQQmlExpression::valueChanged()を発行します。これにより、アプリケーションは式の結果に関連付けられた値が常に最新の状態であることを保証できます。
notifyOnChange がfalse(デフォルト)の場合、QQmlExpression は式の評価に関与するプロパティを監視せず、QQmlExpression::valueChanged()は決して発行されません。これは、アプリケーションが式の「1回限りの」評価を望む場合に、より効率的です。
notifyOnValueChanged()も参照してください 。
void QQmlExpression::setSourceLocation(const QString &url, int line, int column = 0)
この式の場所を、url の「line 」および「column 」に設定してください。この情報はスクリプトエンジンによって使用されます。
QString QQmlExpression::sourceFile() const
この式に対応するソースファイルのURLを返します。ソースの場所は、事前にsetSourceLocation() を呼び出して設定しておく必要があります。
[signal] void QQmlExpression::valueChanged()
式が前回評価された時点から値が変化するたびに発火します。このシグナルが発火するには、その式が(QQmlExpression::evaluate() を呼び出すことで)少なくとも一度は評価されている必要があります。
© 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.