Qt Quick View Android 类

QtQuickView 类让您轻松将 QML 内容作为 View 添加到您的 Android 应用中。

QtQuickView
包名org.qtproject.qt.android
扩展org.qtproject.qt.android.QtView

– org.qtproject.qt.android.QtLayout

–– android.view ViewGroup

详细信息

QtQuickView 类让您轻松将 QML 内容作为 View 添加到您的 Android 应用中。《QtQuickView》实例化一个带有特定 QML 组件源(本地或网络文件)的《QQuickView》并将其嵌入到自身中。您可以像对任何其他View一样将其添加到 Android 应用的布局中。《QtQuickView》是您想要向非 Qt Android 应用扩展 QML 内容但不想使整个应用都使用 Qt 框架时的良好选择。它将 Qt Quick 的功能带入 Android 应用中,使得在 Android 应用中使用各种 Qt Quick API 成为可能。

类的典型使用

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ...

    QtQuickView qmlView = new QtQuickView(this, "qrc:/qt/qml/target/main.qml", "target");
    qmlView.setStatusChangeListener(status -> {
        Log.i(TAG, "QML loading status changed to " + status);
    });

    // Add QML to your layout
    layout.addView(qmlView, params);
    ...
}

更详细的示例,请参阅Android Studio 项目中的 QML

构造函数

public QtQuickView(Context parent, String qmlUri, String appName)

创建一个 QtQuickView 来加载和渲染一个 QML 组件。实例化《QtQuickView》将加载 Qt 库,包括由《appName》指定的应用库。然后,它创建一个加载指定《qmlUri》的 QML 源的《QQuickView》。

参数

  • context:父 Context。
  • qmlUri:主 QML 文件的 URI。
  • appName:要加载并启动的 Qt 应用库的名称。这对应于 Qt 应用设置中的 target 名称。

异常

如果参数无效,则抛出《InvalidParameterException》。

public QtQuickView(Context context, String qmlUri, String appName, String[] qmlImportPaths)

创建一个 QtQuickView 来加载和查看一个 QML 组件。实例化《QtQuickView》将加载 Qt 库,包括由《appName》指定的应用库。然后,它创建一个加载指定《qmlUri》的 QML 源的《QQuickView》。这个重载接受一个字符串数组《qmlImportPaths》,在 QML 应用应该从自定义路径加载 QML 模块的情况下。

参数

  • context:父 Context。
  • qmlUri:主 QML 文件的 URI。
  • appName:要加载并启动的 Qt 应用库的名称。这对应于 Qt 应用设置中的 target 名称。
  • qmlImportPaths:要传递的附加导入路径的字符串数组。

异常

如果参数无效,则抛出《InvalidParameterException》。

接口

public interface SignalListener

当信号被发出时,在Android UI线程上调用。

参数

  • signalName:字面量信号名称
  • value:由信号传递的值,如果信号没有参数,则为null。

public interface StatusChangeListener

当QML组件状态改变时,在Android UI线程上调用。

参数

  • status:当前状态。

字段

状态值

状态可以是STATUS_NULLSTATUS_READYSTATUS_LOADINGSTATUS_ERROR。更多信息,请参见QQuickView::Status

方法

public void setProperty(String propertyName, Object value)

设置QML根对象上现有属性的值。支持的类型是IntegerDoubleFloatBooleanString。这些类型转换为相应的QML类型int、double/float、bool和string。此函数不会在QML根对象上添加不存在属性。

参数

  • propertyName:要设置其值的现有根对象属性名称
  • value:属性值

public <T extends Object> T getProperty(String propertyName)

获取QML根对象上现有属性的值。支持的返回类型是IntegerDoubleFloatBooleanString。这些类型从相应的QML类型转换为int、double/float、bool和string。

参数

  • propertyName:现有根对象属性的名称

返回

如果属性不存在或QML组件的状态不是STATUS_READY,则此函数将返回null。

异常

如果类型转换失败,抛出ClassCastException

public <T> int addSignalListener(String signalName, Class<T> argType, SignalListener<T> listener)

将与QML根对象信号关联的一个SignalListener

参数

  • signalName:根对象信号的名称
  • argType:信号参数的Class类型
  • listener:SignalListener接口实例

返回

信号和监听器之间的Connection ID或如果存在相同的信号和监听器之间的现有连接ID。如果QML根对象上不存在该信号,则返回负值。

public boolean removeSignalListener(int signalListenerId)

停止从addSignalListener()调用中获得的给定id的SignalListener监听信号。

参数

  • signalListenerId:连接ID

返回

如果连接ID有效且已成功删除,则返回True,否则返回false。

public int getStatus()

获取QML组件的状态status

返回

STATUS_READY 当 QML 准备就绪时。调用操作 QML根对象的方法,例如 setProperty()getProperty(),和 addSignalListener(),仅当当前状态是 STATUS_READY 时才成功。它还可以返回其他代表底层 QQuickView 实例状态的 状态 值。

public void setStatusChangeListener(StatusChangeListener listener)

设置一个 StatusChangeListener 来监听状态变化。

参数

© 2024 The Qt Company Ltd. 其中包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可版1.3的条款提供的。Qt及其相关标志是芬兰和/或其他国家的The Qt Company Ltd的商标。所有其他商标均属其各自所有者。