QML类型说明-EnginioClient

本文介绍EnginioClient,一种用于与云端交互的QML API,涵盖其使用方法、属性、信号及方法等内容,包括认证管理、数据操作等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EnginioClient

ImportStatement:   import Enginio 1.0

Since:  Qt 5.3

 

Properties

authenticationState: Enginio::AuthenticationState

backendId :string

identity :EnginioIdentity

 

Signals

error(QJSValuereply)

finished(QJSValuereply)

sessionAuthenticated(QJSValuereply)

sessionAuthenticationError(QJSValuereply)

sessionTerminated()

 

Methods

EnginioReplycreate(QJSValue object, Operation operation)

EnginioReplydownloadUrl(QJSValue object)

EnginioReplyfullTextSearch(QJSValue query)

EnginioReplyquery(QJSValue query, Operation operation)

EnginioReplyremove(QJSValue query, Operation operation)

EnginioReplyupdate(QJSValue query, Operation operation)

EnginioReplyuploadFile(QJSValue object, QUrl file)

 

DetailedDescription

importEnginio 1.0

EnginioClient是QML为云设计的API。它用来与后端云沟通。EnginioModel更是使多个对象的处理变得简单。云端被云端id标识。

EnginioClient{

    id: client

    backendId: "YOUR_BACKEND_ID" //from Enginio Dashboard

}

一旦云端被设置,调用EnginioClient的query来运行查询变得可能。例如用类型"objects.image"运行查询获得所有的对象。

EnginioClient{

    // ...

    Component.onCompleted:query({"objectType": "objects.image"})

}

EnginioClient给了我们相应查询结果的方便方式:

EnginioClient{

    // ...

    onFinished: console.log("Enginorequest finished." + reply.data)

    onError: console.log("Enginio error" + reply.errorCode + ": " + reply.errorString)

}

数据交换使用JSON 语法,它是JavaScript 语法的子集。

 

PropertyDocumentation

authenticationState: Enginio::AuthenticationState

身份验证的状态。Enginio提供了简便的方式管理用户。这个属性反应了当前用户的验证情况。同时参阅identity和EnginioOAuth2Authentication。

 

backendId :string

云端id。他能从Enginio发布板获得。

 

identity : EnginioIdentity

代表一个用户。设置这个属性将创建一个异步认证请求,返回的结果更新authenticationState。分配它一个空指针将终止会话。

同时参阅authenticationState、sessionAuthenticated、sessionAuthenticationError和EnginioOAuth2Authentication。

 

SignalDocumentation

error(QJSValuereply)

当响应完成,包含错误时,发射这个信号。

 

finished(QJSValuereply)

当相应完成时发射这个信号。注意这个信号总是被发射,不管响应完成是成功还是失败。

 

sessionAuthenticated(QJSValuereply)

用户登录后发射这个信号。这个信号发射于用户成功登陆到云端。从那时起,和云端的所有通信都使用这个凭证。reply包含登录和用户的信息。详细的信息根据登录方法的不同有所区别,但典型的响应像下面这样:.

{

  "access_token":"...",              // oauth2access token

  "refresh_token":"...",             // oauth2refresh token

  "token_type":"bearer",             // oauth2token type

  "expires_in": 28799,                // oautth2 token expiry date

  "enginio_data": {

    "user": {

      "id": "...",                    // this user Id

      "createdAt":"...",             // when theuser was created

      "creator": {                    // who created the user

        "id": "creatorId",

        "objectType":"users"

      },

      "email":"user@user.com",       // theuser's email address

      "firstName":"John",            // theuser's first name

      "lastName":"Foo",              // theuser's last name

      "objectType":"users",

      "updatedAt":"2013-11-25T14:54:58.957Z",

      "username":"JohnFoo"           // the user's login

    },

    "usergroups": []                  // usergroups to which theuser belongs

  }

}

同时参阅EnginioClient::sessionAuthenticationError()、EnginioReply和EnginioOAuth2Authentication。

 

sessionAuthenticationError(QJSValuereply) const

登录失败发射这个信号。reply包含登录为什么登录失败的详细信息。同时参阅EnginioClient::sessionAuthenticated()、EnginioReply、EnginioClientConnection::identity、EnginioOAuth2Authentication。

 

sessionTerminated()const

当用户登出时,发射这个信号。同时参阅EnginioOAuth2Authentication。

 

MethodDocumentation

EnginioReplycreate(QJSValue object, Operation operation)

插入一个新对象到数据库中。返回的EnginioReply指明创建的成功。如果没有错误的完成,则云端的对象便成可以使用的。

operation参数定义了创建的对象种类。如普通对象或一个用户或组。默认情况下,Enginio::ObjectOperation被使用并创建普通对象。注意,objectType要求是普通对象,并以"objects."开始。用JSON创建对象需要遵循下面的结构:

{

    "objectType":"object.myType",

    "name" : "A thing",

    "price" : "5",

}

仅仅objectType被要求,name和price是自定义属性的例子。用户和其他对象种类一样,不需要请求任何objectType就可被创建。

下面创建一个新用户:

var reply =enginioClient.create(

            { "username": login.text,

              "password":password.text,

              "email":userEmail.text,

              "firstName":userFirstName.text,

              "lastName":userLastName.text

            }, Enginio.UserOperation)

添加新成员到用户组,JSON需要看起来像下面的例子:

{

    "id": "groupId",

    "member": { "id":"userId", "objectType": "users" }

}

一旦创建完成,返回的EnginioReply包含状态和数据。同时参阅EnginioReply、query()、update()、remove()和Enginio::Operation。

 

EnginioReplydownloadUrl(QJSValue object)

得到下载文件的URL。

vardownloadData = {

    "id": uploadReply.data.id,

}

vardownloadReply = enginio.downloadUrl(downloadData)

响应包含下载的URL和URL将在有效状态持续多久。

downloadReply.data.expiringUrl

downloadReply.data.expiresAt

同时参阅uploadFile()。

 

EnginioReplyfullTextSearch(QJSValue query)

在数据库中执行全文搜索。qurey是发送到云端执行全文搜索的对象。注意,搜索需要服务等索引到搜索属性(在云端被设置)。返回的EnginioReply包含搜索完成的状态和结果。同时参阅EnginioReply、EnginioClient::create()、EnginioClient::query()、EnginioClient::update()、EnginioClient::remove()和JSON要求结构。

 

EnginioReplyquery(QJSValue query, Operation operation)

查询数据库。

quere包含在云端的实际查询。它将运行在云端的操作部分。query必须包含"objectType",用以指明在云端的类型定义。他还能包含下面的部分:

query -描述什么样的对象被查询,允许过滤结果。可查阅{https://engin.io/documentation/rest/parameters/queries}{JSON query structure}

limit -限制服务返回多少个对象。默认值是100。

offset -从返回结果开始,多少个对象被略过。注意服务保持随即排序,所以这样用offset意味着排序。

sort -结果如何排序,参阅JSON排序要求结构。

count -如果count被设置,服务仅返回了count匹配的对象。

include -那些对象在响应中包含。参阅JSON的include结构

JSON列出所有"objects.image"类型的对象:

{

    "objectType":"objects.image"

}

下面是包含文件引用和查询参数的对象是有效的,需要返回:

{

    "objectType":"objects.image",

    "include": {"file":{}},

    "query" : { "file": {"$ne": null } }

}

寻找用户组用"allUsers":

vargroupQuery = enginioClient.query({ "query": { "name" :"allUsers" } }, Enginio.UsergroupOperation)

当查询完成,返回的EnginioReply包含状态和结果数据。

同时参阅EnginioReply、create()、update()和remove()。

 

EnginioReplyremove(QJSValue query, Operation operation)

从数据库中移除一个对象。

被对象ID指定的对象被移除,如果要移除的对象是普通对象,还需要指定objectType。

JSON看起来像下面这样指定标识:

{

    "objectType":"objects.images",

    "id":"52b1a94b5a3d8b15b1037ff5"

}

operation被移除对象的区域,默认是Enginio::ObjectOperation,表示普通对象默认被移除。当移除完成,返回包含状态的EnginioReply。同时参阅EnginioReply、create()、query()和update()。

 

EnginioReplyupdate(QJSValue query, Operation operation)

更新数据库中的对象。operation是更新对象的区域。默认Enginio::ObjectOperation,表示更新普通对象。

改变对象的名字属性为"New Name",在JSON上像下面的操作:

{

    "id": "objectId",

    "objectType":"objects.objectType",

    "name": "New Name"

}

对象的所有其他属性不受更新影响。

改变对象的访问控制列表,在JSON上像下面的处理:

{

    "id": "objectId",

    "objectType":"objects.objectType",

    "access": { "read":["id": "userId", "objectTypes":"users"],

                "update":["id": "userId", "objectTypes":"users"],

                "admin":["id": "userId", "objectTypes":"users"] }

}

更新一旦完成,返回包含状态的EnginioReply。同时参阅EnginioReply、create()、query()和remove()。

 

EnginioReplyuploadFile(QJSValue object, QUrl file)

保存对象关联的文件到Enginio。

每一个上传到数据库的文件需要与对象关联。

注意,上传只在设置制服的服务器上工作。设置制服是这样的:在云端的仪表板上创建我们使用的属性,设置这个属性引用文件。

上传文件的顺序,首先创建一个对象:

varfileObject = {

    "objectType":AppConfig.testObjectType,

    "title": "Example objectwith file attachment",

}

var reply =enginio.create(fileObject);

然后做上传动作:

var objectId= reply.data.id

varuploadData = {

    "file":{

       "fileName":"test.png"

    },

    "targetFileProperty": {

        "objectType": AppConfig.testObjectType,

        "id": objectId,

        "propertyName":"fileAttachment"

    },

}

varuploadReply = enginio.uploadFile(uploadData, fileName)

注意不要直接删除文件,替代的做法是,当包含引用的对象被删除,文件自动被删除。同时参阅downloadUrl()。
### 回答1: QML-QianWindow-V1版本界面是一款用户界面设计程序,它为开发人员提供了大量可自定义的UI组件,使得开发者可以轻松地创建美观、直观且易于使用的界面。QML-QianWindow-V1版本界面具有界面美观,易用性强以及可扩展性强的特点。该程序提供了多种UI组件如窗口、按钮、文本框、下拉框、进度条等等。每个组件都可以基于开发需求进行个性化设计,提高了程序的可读性和可维护性。 QML-QianWindow-V1版本界面的窗口设计功能令人称赞。用户可以定制窗口的样式、位置和大小等属性,使其符合自己的需求。同时,该程序支持类似IOS与Android风格的Tab、Panel、Dialog等视图控件,让应用的界面更具丰富性和交互性,提升用户体验。 此外,QML-QianWindow-V1版本界面可让用户通过实用的数据模型,快速地创建和管理表格和列表,包括多行、多列的表格和单选或多选列表,使得用户可以方便地处理大量数据。 总之,QML-QianWindow-V1版本界面通过提供易用性和可扩展性强的UI组件来简化界面设计过程,使得开发人员可以迅速开发出优秀的桌面应用程序界面,以满足用户高品质的界面需求。 ### 回答2: QML-Qianwindow-v1版本是一款基于QML语言开发的桌面应用程序,其主要特点是界面设计美观、简单易用,适用于多种应用场景。 该软件的主界面包含五个主要区域:侧边栏、消息中心、主视图、小部件和设置菜单。 侧边栏主要用于导航,其中包含主要的应用程序和功能,使用户可以轻松地进入不同的模块。 消息中心用于显示来自其他应用程序的通知,例如电子邮件或要完成的任务。 主视图是QML-Qianwindow-v1的核心区域,其中包含常见的功能和工具,例如打开的文件、书签和搜索栏。 小部件区域用于显示用户选择的小部件,例如天气预报和日历。 设置菜单区域包含应用程序的设置菜单,用户可以在此处更改应用程序的选项、主题和常规设置。 总体来说,QML-Qianwindow-v1版本的界面设计非常简洁,用户友好,易于使用。它增强了用户的生产力和效率,为用户提供了一种令人愉悦的使用体验。 ### 回答3: QML-QianWindow-v1是一种基于Qt QML开发的简单易用的窗口界面库。其设计风格简洁明了,适用于各种桌面应用开发。 该库主要由三个部分组成:Title Bar、Main Body和Sidebar。其中,Title Bar是窗口的标题栏,可以自定义标题、图标、按钮、菜单等。Main Body是页面的主体内容,可以显示各种控件、窗口和布局。Sidebar是侧边栏,可以显示常用的菜单、工具、快捷方式等。 在QML-QianWindow-v1中,可以使用QianWindow来创建窗口。QianWindow提供了常用的窗口操作方法,例如最小化、最大化、关闭等。同时,该库还提供了很多常用的QML组件,例如按钮、文本框、下拉框、列表框等,这些组件可以方便快捷地进行页面设计。此外,在QML-QianWindow-v1中还支持自定义样式,可以根据需要修改组件的颜色、形状、大小等。 QML-QianWindow-v1的界面设计风格简洁明了,同时具有一定的美观度。尤其是Title Bar部分的设计非常灵活,可以根据需要自由定制。Main Body部分支持多种布局方式,可以满足不同页面设计的需求。Sidebar部分则提供了丰富的快捷操作方式,提高了用户的使用效率。 总的来说,QML-QianWindow-v1是一款非常实用的界面库,可以方便快捷地进行桌面应用开发。无论是初学者还是有经验的开发者,都可以轻松使用该库进行界面设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值