QQmlExpression Class
QQmlExpression クラスは、QML コンテキストで JavaScript を評価します。詳細...
Header: | #include <QQmlExpression> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake: | QT += qml |
Inherits: | 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 式の結果が未定義の値であった場合は 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 が偽の場合(デフォルト)、QQmlExpression は式の評価に関係する プロパティを監視せず、QQmlExpression::valueChanged ()は決して出力されません。これは、アプリケーションが "1回だけ "式を評価したい場合に効率的です。
notifyOnValueChanged()も参照 。
void QQmlExpression::setSourceLocation(const QString &url, int line, int column = 0)
この式の場所をline とurl のcolumn に設定します。 この情報はスクリプト・エンジンで使用されます。
QString QQmlExpression::sourceFile() const
この式のソース・ファイルの URL を返します。ソースの場所は、setSourceLocation() を呼び出して事前に設定しておく必要があります。
[signal]
void QQmlExpression::valueChanged()
式の値が前回評価されたときから変更されるたびに発行されます。このシグナルが発行される前に、(QQmlExpression::evaluate() を呼び出すことによって)式が少なくとも 1 回評価されている必要があります。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。