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 を返す。
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 を返します。
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()を呼び出すことによって)少なくとも一度は評価されていなければならない。
© 2025 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.