Getting Started Programming with QML/pt-BR: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
==Começando a programar com <span class="caps">QML</span>==
h2. Começando a programar com QML


Bem vindo ao mundo do <span class="caps">QML</span>, a linguagem de interface de usuário (UI) declarativa. Neste guia “Começando a programar”, nós iremos criar uma simples aplicação editor de texto usando <span class="caps">QML</span>. Após ler este guia, você estará pronto para desenvolver suas próprias aplicações usando <span class="caps">QML</span> e Qt C++.
Bem vindo ao mundo do QML, a linguagem de interface de usuário (UI) declarativa. Neste guia &quot;Começando a programar&amp;quot;, nós iremos criar uma simples aplicação editor de texto usando QML. Após ler este guia, você estará pronto para desenvolver suas próprias aplicações usando QML e Qt C+''.
<br />h3. QML para criar Interfaces de Usuário
<br />A aplicação que nós estamos criando é um simples editor que irá carregar, salvar e fazer manipulação de texto. Este guia consiste de duas partes. A primeira parte envolve fazer o design do layout e comportamento da aplicação usando linguagem declarativa em QML. Para a segunda parte, carregar e salvar arquivos serão implementados usando Qt C. Usando o &quot;Sistema Qt de Meta-Objetos&amp;quot;:http://doc.qt.nokia.com/4.7/metaobjects.html, nós podemos expor as funções C''+ como propriedades que a QML pode usar. Utilizando QML e Qt C+'', podemos dissociar de maneira eficiente a lógica de inferface da lógica de aplicação.
<br />[[Image:http://doc.qt.nokia.com/4.7/images/qml-texteditor5_editmenu.png|QML Example Code]]
<br />Para executar o código de exemplo em QML, apenas proveja o arquivo arquivo QML como argumento para a ferramenta &quot;qmlviewer&amp;quot;:http://doc.qt.nokia.com/4.7/qmlviewer.html. A parte de C''+ deste tutorial assume que o leitor possui conhecimento básico dos procedimentos de compilação do Qt.


===<span class="caps">QML</span> para criar Interfaces de Usuário===
Capítulos do tutorial:<br /># Definindo um Botão e um Menu<br /># Implementando uma Barra de Menu<br /># Criando um Editor de Texto<br /># Decorando o Editor de Texto<br /># Extendendo QML usando Qt C++


A aplicação que nós estamos criando é um simples editor que irá carregar, salvar e fazer manipulação de texto. Este guia consiste de duas partes. A primeira parte envolve fazer o design do layout e comportamento da aplicação usando linguagem declarativa em <span class="caps">QML</span>. Para a segunda parte, carregar e salvar arquivos serão implementados usando Qt C++. Usando o [http://doc.qt.nokia.com/4.7/metaobjects.html Sistema Qt de Meta-Objetos] ''[doc.qt.nokia.com]'', nós podemos expor as funções C++ como propriedades que a <span class="caps">QML</span> pode usar. Utilizando <span class="caps">QML</span> e Qt C++, podemos dissociar de maneira eficiente a lógica de inferface da lógica de aplicação.
=== Definindo um Botão e um Menu ===


[[Image:qml-texteditor5_editmenu.png|QML Example Code]]
=== Componente Básico - Botão ===


Para executar o código de exemplo em <span class="caps">QML</span>, apenas proveja o arquivo arquivo <span class="caps">QML</span> como argumento para a ferramenta [http://doc.qt.nokia.com/4.7/qmlviewer.html qmlviewer] ''[doc.qt.nokia.com]''. A parte de C++ deste tutorial assume que o leitor possui conhecimento básico dos procedimentos de compilação do Qt.
Iniciaremos nosso editor de texto criando um botão. Funcionalmente, um botão possui uma área sensível ao mouse e uma label. Botões realizam ações quando o usuário pressiona um botão.


Capítulos do tutorial:
Em QML, o item visual básico é o elemento &quot;Rectangle&amp;quot;:http://doc.qt.nokia.com/4.7/qml-rectangle.html. O Rectangle tem propriedades para controlar a aparência e localização do elemento.


# Definindo um Botão e um Menu
<code>import Qt 4.7
# Implementando uma Barra de Menu
# Criando um Editor de Texto
# Decorando o Editor de Texto
# Extendendo <span class="caps">QML</span> usando Qt C++


===Definindo um Botão e um Menu===
Rectangle {<br /> id: simplebutton<br /> color: &quot;grey&amp;quot;<br /> width: 400<br /> height: 200<br /> Text:<br />}<br /></code><br />Primeiramente, a sentença ''import Qt 4.7'' permite a ferramenta qmlviewer importar elementos QML que iremos usar posteriormente. Essa linha deve existir para todo arquivo QML. Note que a versão dos módulos Qt é incluída na sentença ''import''.


===Componente Básico – Botão===
Este simples retângulo possui um identificador único, ''simplebutton'', que é associado a propriedade ''id''. As propriedades do elemento Rectangle são associadas a valores listando a propriedade, seguida de dois pontos (':'), e então o valor. No código de exemplo, a cor cinza é associada a propriedade ''color'' do elemento Rectangle. Similarmente associamos a largura e altura do Rectangle.


Iniciaremos nosso editor de texto criando um botão. Funcionalmente, um botão possui uma área sensível ao mouse e uma label. Botões realizam ações quando o usuário pressiona um botão.
(…)


Em <span class="caps">QML</span>, o item visual básico é o elemento [http://doc.qt.nokia.com/4.7/qml-rectangle.html Rectangle] ''[doc.qt.nokia.com]''. O Rectangle tem propriedades para controlar a aparência e localização do elemento.
=== Implementando uma Barra de Menu ===


Primeiramente, a sentença ''import Qt 4.7'' permite a ferramenta qmlviewer importar elementos <span class="caps">QML</span> que iremos usar posteriormente. Essa linha deve existir para todo arquivo <span class="caps">QML</span>. Note que a versão dos módulos Qt é incluída na sentença ''import''.
Nossa aplicação de edição de texto precisará de um meio para exibir menus usando uma barra de menu. A barra de menu trocará os diferentes menus e o usuário pode escolher qual menu mostrar. Troca entre menus implica que os menus precisam de mais estrutura que simplesmente exibi-los em uma linha. QML usa modelos e interfaces para estruturar os dados e exibi-los de forma estruturada.


Este simples retângulo possui um identificador único, ''simplebutton'', que é associado a propriedade ''id''. As propriedades do elemento Rectangle são associadas a valores listando a propriedade, seguida de dois pontos (’:’), e então o valor. No código de exemplo, a cor cinza é associada a propriedade ''color'' do elemento Rectangle. Similarmente associamos a largura e altura do Rectangle.
=== Usando Modelos de Dados e Interfaces ===


(…)
QML possui diferentes &quot;interfaces&amp;quot;:http://doc.qt.nokia.com/4.7/qdeclarativemodels.html que exibem diferentes &quot;modelos de dados&amp;quot;:http://doc.qt.nokia.com/4.7/qdeclarativemodels.html. Nossa barra de menu irá exibir os menus numa lista, com um cabeçalho que mostra uma fileira de nomes de menus. As listas dos menus são declaradas dentro de um VisualItemModel. O elemento &quot;VisualItemModel&amp;quot;:http://doc.qt.nokia.com/4.7/qml-visualitemmodel.html contêm itens que já possuem interfaces, tais como elementos Rectangle e elementos UI importados. Outros tipos de modelos, tais como o elemento &quot;ListModel&amp;quot;:http://doc.qt.nokia.com/4.7/qml-listmodel.html, precisam de um representante para exibir seus dados.


===Implementando uma Barra de Menu===
Nós declaramos dois itens visuais no menuListModel, o FileMenu e o EditMenu. Nós personalizamos os dois menus e os exibimos usando um &quot;ListView&amp;quot;:http://doc.qt.nokia.com/4.7/qml-listview.html. O arquivo Menubar.qlm contêm a declaração QML e um simples menu de edição é definido em EditMenu.qml.<br /><code><br /> VisualItemModel{<br /> id: menuListModel<br /> FileMenu{<br /> width: menuListView.width<br /> height: menuBar.height<br /> color: fileColor<br /> }<br /> EditMenu{<br /> color: editColor<br /> width: menuListView.width<br /> height: menuBar.height<br /> }<br /> }<br /></code>


Nossa aplicação de edição de texto precisará de um meio para exibir menus usando uma barra de menu. A barra de menu trocará os diferentes menus e o usuário pode escolher qual menu mostrar. Troca entre menus implica que os menus precisam de mais estrutura que simplesmente exibi-los em uma linha. <span class="caps">QML</span> usa modelos e interfaces para estruturar os dados e exibi-los de forma estruturada.
O elemento &quot;ListView&amp;quot;:http://doc.qt.nokia.com/4.7/qml-listview.html exibirá um modelo de acordo com um representante. O representante pode declarar os itens do modelo para exibi-los em um elemento ''Linha'' ou exibe os itens em uma grade. Nosso menuListModel já possui itens visíveis, portanto, não precisamos declarar um representante.


===Usando Modelos de Dados e Interfaces===
<code><br />ListView{<br /> id: menuListView


<span class="caps">QML</span> possui diferentes [http://doc.qt.nokia.com/4.7/qdeclarativemodels.html interfaces] ''[doc.qt.nokia.com]'' que exibem diferentes [http://doc.qt.nokia.com/4.7/qdeclarativemodels.html modelos de dados] ''[doc.qt.nokia.com]''. Nossa barra de menu irá exibir os menus numa lista, com um cabeçalho que mostra uma fileira de nomes de menus. As listas dos menus são declaradas dentro de um VisualItemModel. O elemento [http://doc.qt.nokia.com/4.7/qml-visualitemmodel.html VisualItemModel] ''[doc.qt.nokia.com]'' contêm itens que já possuem interfaces, tais como elementos Rectangle e elementos UI importados. Outros tipos de modelos, tais como o elemento [http://doc.qt.nokia.com/4.7/qml-listmodel.html ListModel] ''[doc.qt.nokia.com]'', precisam de um representante para exibir seus dados.
//Anchors are set to react to window anchors<br /> anchors.fill:parent<br /> anchors.bottom: parent.bottom<br /> width:parent.width<br /> height: parent.height


Nós declaramos dois itens visuais no menuListModel, o FileMenu e o EditMenu. Nós personalizamos os dois menus e os exibimos usando um [http://doc.qt.nokia.com/4.7/qml-listview.html ListView] ''[doc.qt.nokia.com]''. O arquivo Menubar.qlm contêm a declaração <span class="caps">QML</span> e um simples menu de edição é definido em EditMenu.qml.<br />
//the model contains the data<br /> model: menuListModel


O elemento [http://doc.qt.nokia.com/4.7/qml-listview.html ListView] ''[doc.qt.nokia.com]'' exibirá um modelo de acordo com um representante. O representante pode declarar os itens do modelo para exibi-los em um elemento ''Linha'' ou exibe os itens em uma grade. Nosso menuListModel já possui itens visíveis, portanto, não precisamos declarar um representante.
//control the movement of the menu switching<br /> snapMode: ListView.SnapOneItem<br /> orientation: ListView.Horizontal<br /> boundsBehavior: Flickable.StopAtBounds<br /> flickDeceleration: 5000<br /> highlightFollowsCurrentItem: true<br /> highlightMoveDuration:240<br /> highlightRangeMode: ListView.StrictlyEnforceRange<br /> }<br /></code>


(…)
(…)


===Criando um Editor de Texto===
=== Criando um Editor de Texto ===


(…)
(…)


===Decorando o Editor de Texto===
=== Decorando o Editor de Texto ===


(…)
(…)


===Extendendo <span class="caps">QML</span> usando Qt C++===
=== Extendendo QML usando Qt C++ ===
 
(…)

Revision as of 10:10, 24 February 2015

h2. Começando a programar com QML

Bem vindo ao mundo do QML, a linguagem de interface de usuário (UI) declarativa. Neste guia "Começando a programar&quot;, nós iremos criar uma simples aplicação editor de texto usando QML. Após ler este guia, você estará pronto para desenvolver suas próprias aplicações usando QML e Qt C+.
h3. QML para criar Interfaces de Usuário
A aplicação que nós estamos criando é um simples editor que irá carregar, salvar e fazer manipulação de texto. Este guia consiste de duas partes. A primeira parte envolve fazer o design do layout e comportamento da aplicação usando linguagem declarativa em QML. Para a segunda parte, carregar e salvar arquivos serão implementados usando Qt C. Usando o "Sistema Qt de Meta-Objetos&quot;:http://doc.qt.nokia.com/4.7/metaobjects.html, nós podemos expor as funções C+ como propriedades que a QML pode usar. Utilizando QML e Qt C+, podemos dissociar de maneira eficiente a lógica de inferface da lógica de aplicação.
QML Example Code
Para executar o código de exemplo em QML, apenas proveja o arquivo arquivo QML como argumento para a ferramenta "qmlviewer&quot;:http://doc.qt.nokia.com/4.7/qmlviewer.html. A parte de C+ deste tutorial assume que o leitor possui conhecimento básico dos procedimentos de compilação do Qt.

Capítulos do tutorial:
# Definindo um Botão e um Menu
# Implementando uma Barra de Menu
# Criando um Editor de Texto
# Decorando o Editor de Texto
# Extendendo QML usando Qt C++

Definindo um Botão e um Menu

Componente Básico - Botão

Iniciaremos nosso editor de texto criando um botão. Funcionalmente, um botão possui uma área sensível ao mouse e uma label. Botões realizam ações quando o usuário pressiona um botão.

Em QML, o item visual básico é o elemento "Rectangle&quot;:http://doc.qt.nokia.com/4.7/qml-rectangle.html. O Rectangle tem propriedades para controlar a aparência e localização do elemento.

import Qt 4.7

Rectangle {<br /> id: simplebutton<br /> color: &quot;grey&amp;quot;<br /> width: 400<br /> height: 200<br /> Text:<br />}<br />


Primeiramente, a sentença import Qt 4.7 permite a ferramenta qmlviewer importar elementos QML que iremos usar posteriormente. Essa linha deve existir para todo arquivo QML. Note que a versão dos módulos Qt é incluída na sentença import.

Este simples retângulo possui um identificador único, simplebutton, que é associado a propriedade id. As propriedades do elemento Rectangle são associadas a valores listando a propriedade, seguida de dois pontos (':'), e então o valor. No código de exemplo, a cor cinza é associada a propriedade color do elemento Rectangle. Similarmente associamos a largura e altura do Rectangle.

(…)

Implementando uma Barra de Menu

Nossa aplicação de edição de texto precisará de um meio para exibir menus usando uma barra de menu. A barra de menu trocará os diferentes menus e o usuário pode escolher qual menu mostrar. Troca entre menus implica que os menus precisam de mais estrutura que simplesmente exibi-los em uma linha. QML usa modelos e interfaces para estruturar os dados e exibi-los de forma estruturada.

Usando Modelos de Dados e Interfaces

QML possui diferentes "interfaces&quot;:http://doc.qt.nokia.com/4.7/qdeclarativemodels.html que exibem diferentes "modelos de dados&quot;:http://doc.qt.nokia.com/4.7/qdeclarativemodels.html. Nossa barra de menu irá exibir os menus numa lista, com um cabeçalho que mostra uma fileira de nomes de menus. As listas dos menus são declaradas dentro de um VisualItemModel. O elemento "VisualItemModel&quot;:http://doc.qt.nokia.com/4.7/qml-visualitemmodel.html contêm itens que já possuem interfaces, tais como elementos Rectangle e elementos UI importados. Outros tipos de modelos, tais como o elemento "ListModel&quot;:http://doc.qt.nokia.com/4.7/qml-listmodel.html, precisam de um representante para exibir seus dados.

Nós declaramos dois itens visuais no menuListModel, o FileMenu e o EditMenu. Nós personalizamos os dois menus e os exibimos usando um "ListView&quot;:http://doc.qt.nokia.com/4.7/qml-listview.html. O arquivo Menubar.qlm contêm a declaração QML e um simples menu de edição é definido em EditMenu.qml.

<br /> VisualItemModel{<br /> id: menuListModel<br /> FileMenu{<br /> width: menuListView.width<br /> height: menuBar.height<br /> color: fileColor<br /> }<br /> EditMenu{<br /> color: editColor<br /> width: menuListView.width<br /> height: menuBar.height<br /> }<br /> }<br />

O elemento "ListView&quot;:http://doc.qt.nokia.com/4.7/qml-listview.html exibirá um modelo de acordo com um representante. O representante pode declarar os itens do modelo para exibi-los em um elemento Linha ou exibe os itens em uma grade. Nosso menuListModel já possui itens visíveis, portanto, não precisamos declarar um representante.

<br />ListView{<br /> id: menuListView

//Anchors are set to react to window anchors<br /> anchors.fill:parent<br /> anchors.bottom: parent.bottom<br /> width:parent.width<br /> height: parent.height

//the model contains the data<br /> model: menuListModel

//control the movement of the menu switching<br /> snapMode: ListView.SnapOneItem<br /> orientation: ListView.Horizontal<br /> boundsBehavior: Flickable.StopAtBounds<br /> flickDeceleration: 5000<br /> highlightFollowsCurrentItem: true<br /> highlightMoveDuration:240<br /> highlightRangeMode: ListView.StrictlyEnforceRange<br /> }<br />

(…)

Criando um Editor de Texto

(…)

Decorando o Editor de Texto

(…)

Extendendo QML usando Qt C++