IntroductionQtQuick/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(Remove non-functioning "toc" command)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''Български''' [[IntroductionQtQuick|English]] [[IntroductionQtQuick Russian|Русский]]
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}


=Въведение в Qt Quick=
[[Category:Developing_with_Qt::Qt Quick]]
[[Category:Developing_with_Qt::Qt Quick::Tutorial]]


==За Qt Quick==
'''Български''' [[:IntroductionQtQuick|English]] [[IntroductionQtQuick_Russian|Русский]]


Потребителски интерфейси, разработени в Qt Quick се създават като правоъгълни елементи във визуални дървета. Технологията е ограничена до набор от елементи, фокусирайки се върху взаимодействия чрез докосване и жестове. Qt Quick въвежда нова концепция за моделиране на логиката в приложението чрез йерархични стейт машини. Освен това преходи и богат набор от анимации([http://en.wikipedia.org/wiki/Tweening tweens] ''[en.wikipedia.org]''), спомогат за лесното създаване на привлекателни и удобни интерфейси.


Въпреки, че уеб разработчиците по-често гледат на себе си като дизайнери, а за повечето софтуерни разработчици програмирането е изкуство, все още има голяма празина да се прескачи, ако дизайнерите искат да участват в процеса на разработка с Qt и C++. C++, все пак, е език от ниско ниво, насочен към системното програмиране и програмирането за вградени системи. Qt Quick бе разработен, точно за да запълни тази празнина. Неговата цел е разработката на потребителски интерфейси. Той поставя декларативен слой над JavaScript, който прилича на Cascading Style Sheets (<span class="caps">CSS</span>). Така няма да ви се налага да се притеснявате много за преобразуване на типове, указатели или живот на обектите. Вместо това фокусът пада върху създаването на привлекателни и удобни потребителски интерфейси.
= Въведение в Qt Quick =


==Терминология==
== За Qt Quick ==


Потребителски интерфейси, разработени в Qt Quick се създават като правоъгълни елементи във визуални дървета. Технологията е ограничена до набор от елементи, фокусирайки се върху взаимодействия чрез докосване и жестове. Qt Quick въвежда нова концепция за моделиране на логиката в приложението чрез йерархични стейт машини. Освен това преходи и богат набор от анимации([http://en.wikipedia.org/wiki/Tweening tweens]), спомогат за лесното създаване на привлекателни и удобни интерфейси.
Въпреки, че уеб разработчиците по-често гледат на себе си като дизайнери, а за повечето софтуерни разработчици програмирането е изкуство, все още има голяма празина да се прескачи, ако дизайнерите искат да участват в процеса на разработка с Qt и C+''. C, все пак, е език от ниско ниво, насочен към системното програмиране и програмирането за вградени системи. Qt Quick бе разработен, точно за да запълни тази празнина. Неговата цел е разработката на потребителски интерфейси. Той поставя декларативен слой над JavaScript, който прилича на Cascading Style Sheets (CSS). Така няма да ви се налага да се притеснявате много за преобразуване на типове, указатели или живот на обектите. Вместо това фокусът пада върху създаването на привлекателни и удобни потребителски интерфейси.
== Терминология ==
Преди да започнем да работим с Qt Quick, нека си изясним някои термини. Изглежда, че всички говорят за Qt Quick тези дни, и тъй като технологията все още е нова, има много неясноти около нея.
Преди да започнем да работим с Qt Quick, нека си изясним някои термини. Изглежда, че всички говорят за Qt Quick тези дни, и тъй като технологията все още е нова, има много неясноти около нея.


Преди всичко, Qt Quick, QtQuick и <span class="caps">QML</span> са различни неща! Qt Quick и <span class="caps">QML</span> често се използват като взаимозаменяеми, което не е съвсем правилно. <span class="caps">QML</span> е езикът, QtQuick (без интервал) е името на стандартната библиотека, а Qt Quick (с интервал) се отнася до технологията като цяло. <span class="caps">QML</span> като език, дава възможност за деклариране на йерархии от обекти и логиката, базирана на стейт машини. Той може да се използва и в други области освен дизайна на потребителския интерфейс.
Преди всичко, Qt Quick, QtQuick и QML са различни неща! Qt Quick и QML често се използват като взаимозаменяеми, което не е съвсем правилно. QML е езикът, QtQuick (без интервал) е името на стандартната библиотека, а Qt Quick (с интервал) се отнася до технологията като цяло. QML като език, дава възможност за деклариране на йерархии от обекти и логиката, базирана на стейт машини. Той може да се използва и в други области освен дизайна на потребителския интерфейс.


==Инсталиране и настройване на среда за разработка==
== Инсталиране и настройване на среда за разработка ==
Започвайки от версия 4.7, Qt идва с Qt Quick. Можете да редактирате QML файлове с любимия си редактор, но Qt Creator ви предлага повече възможности. Qt също така предоставя и новия инструмент "qmlviewer", който ви позволява да изпълнявате QML файлове. Започвайки от версия 2.1, Qt Creator поддържа специален режим за дизайн на QML. В зависимост от това за коя платформа ще разработвате, можете да си изберете какво да се инсталира. Qt Quick също така е включен в последните SDK на Nokia и Meego/AppUp. Друг вариант е да инсталирате на Qt с любимият си пакетен миниджър и да настроите вашия редактор да оцветява QML файловете ('''. qml) като JavaScript или CSS. От Маверик ( Убунту 10.10), Qt 4.7 и qmlviewer са включени като пакетите ''libqt4-dev'' и ''qt4-qmlviewer''.


Започвайки от версия 4.7, Qt идва с Qt Quick. Можете да редактирате <span class="caps">QML</span> файлове с любимия си редактор, но Qt Creator ви предлага повече възможности. Qt също така предоставя и новия инструмент “qmlviewer”, който ви позволява да изпълнявате <span class="caps">QML</span> файлове. Започвайки от версия 2.1, Qt Creator поддържа специален режим за дизайн на <span class="caps">QML</span>. В зависимост от това за коя платформа ще разработвате, можете да си изберете какво да се инсталира. Qt Quick също така е включен в последните <span class="caps">SDK</span> на Nokia и Meego/AppUp. Друг вариант е да инсталирате на Qt с любимият си пакетен миниджър и да настроите вашия редактор да оцветява <span class="caps">QML</span> файловете (*. qml) като JavaScript или <span class="caps">CSS</span>. От Маверик ( Убунту 10.10), Qt 4.7 и qmlviewer са включени като пакетите ''libqt4-dev'' и ''qt4-qmlviewer''.
== Пример ==
Ще започнем с най-проста програма, показваща известното съобщение "Hello, world!". За да стартирате файла, бъдете сигурни, че имате инсталиран ''qmlviewer''. Това лесно може да се тества като напишете в конзолата "qmlviewr —v". Ако искате да използвате QtCreator, просто изберете ''File-> New File or Project-> Qt Quick Project-> Qt Quick UI''. Поставете изходния код и натиснете върху големият триъгълен бутон в долния ляв ъгъл или използвайте клавишната комбинация ''Ctrl+R''.


==Пример==
<code>
// HelloWorld.qml
import QtQuick 1.0
Rectangle {
color: "beige"
width: 100; height: 100
Text {
anchors.centerIn: parent
color: "chocolate"
text: "Hello, world!"
}
MouseArea {
anchors.fill: parent
onClicked: Qt.quit()
}
}
</code>


Ще започнем с най-проста програма, показваща известното съобщение “Hello, world!”. За да стартирате файла, бъдете сигурни, че имате инсталиран ''qmlviewer''. Това лесно може да се тества като напишете в конзолата “qmlviewr —v”. Ако искате да използвате QtCreator, просто изберете ''File-&gt; New File or Project-&gt; Qt Quick Project-&gt; Qt Quick UI''. Поставете изходния код и натиснете върху големият триъгълен бутон в долния ляв ъгъл или използвайте клавишната комбинация ''Ctrl+R''.
Първият ред е само коментар. Синтаксисът е същият както в C + ''. Линии, започващи с ''/ /'' и текст, затворен в ''/ * … * /'' се игнорират. Втората линия вмъква стандартната библиотека с всички компоненти по подразбиране: ''Rectangle'', ''Image'', ''Text'', ''MouseArea'', ''Flickable'', … и т.н. Третият ред създава главния елемент на нашата визуална йерархия. ''Rectangle'' елемента просто показва правоъгълник, изпълнен с определен цвят и евентуално заоблени ръбове. За цвят може да се използва всяко от имената на цветове в SVG или да се посочи директно RGB код. В нашия пример бихме могли да използваме ''#F5F5DC'' вместо "beige"(бежово). Размерите на правоъгълника са зададени със свойствата ''width'' и ''height''. За всеки визуален елемент можете да укажете геометрията му чрез ''x'', ''y'', ''width'' и ''height'' в брой на пиксели. Най-често това е необходимо само за елемента от най-високо ниво и за анимираните елементи.
След това добавяме два дъщерни елемента: ''Text'' и ''MouseArea''. За да ги поставим, където искаме, използваме "anchors" (котви). Центърът на текста е закотвен в центъра на родителя. Опитайте да преоразмерите прозореца, за да се проверите това. Вторият елемент е ''MouseArea'', който е закотвен, така че напълно да препокрие родителския елемент. MouseArea е един от невидимите елементи за прихващане на действия от потребителя. Той се нарича ''MouseArea'', но също така засича и допир на устройства със сензорен екран. Накрая ''MouseArea'' започва да слуша за събитието ''onClicked'', което извиква функция за изключване на Qt Quick приложението.


Първият ред е само коментар. Синтаксисът е същият както в C + +. Линии, започващи с ''/ /'' и текст, затворен в ''/ * … * /'' се игнорират. Втората линия вмъква стандартната библиотека с всички компоненти по подразбиране: ''Rectangle'', ''Image'', ''Text'', ''MouseArea'', ''Flickable'', … и т.н. Третият ред създава главния елемент на нашата визуална йерархия. ''Rectangle'' елемента просто показва правоъгълник, изпълнен с определен цвят и евентуално заоблени ръбове. За цвят може да се използва всяко от имената на цветове в <span class="caps">SVG</span> или да се посочи директно <span class="caps">RGB</span> код. В нашия пример бихме могли да използваме ''#F5F5DC'' вместо “beige”(бежово). Размерите на правоъгълника са зададени със свойствата ''width'' и ''height''. За всеки визуален елемент можете да укажете геометрията му чрез ''x'', ''y'', ''width'' и ''height'' в брой на пиксели. Най-често това е необходимо само за елемента от най-високо ниво и за анимираните елементи.<br /> След това добавяме два дъщерни елемента: ''Text'' и ''MouseArea''. За да ги поставим, където искаме, използваме “anchors” (котви). Центърът на текста е закотвен в центъра на родителя. Опитайте да преоразмерите прозореца, за да се проверите това. Вторият елемент е ''MouseArea'', който е закотвен, така че напълно да препокрие родителския елемент. MouseArea е един от невидимите елементи за прихващане на действия от потребителя. Той се нарича ''MouseArea'', но също така засича и допир на устройства със сензорен екран. Накрая ''MouseArea'' започва да слуша за събитието ''onClicked'', което извиква функция за изключване на Qt Quick приложението.
== Езика QML ==
QML е декларативен език, който описва йерархия от обекти. Дървото на обектите се създава при зареждане на QML файла. И на всеки обект се присвояват стойности на неговите свойства. Свойствата се изчисляват чрез константи или JavaScript изрази. Свойствата, дадени като израз на JavaScript изрази, се преизчисляват, ако някое от свойствата, използвано в израза, се промени. Тази концепция за деклариране на свойства, които зависят едно от друго и се обновяват на момента, се нарича '''обвързване на свойствата''' ('''property binding''').
QML се смята за разширение на JavaScript, но той всъщност е и подобрение. Докато JavaScript е ""патешки" език":en.wikipedia.org http://en.wikipedia.org/wiki/Duck_typing , QML прави проверка на основните типове и проверка на синтаксиса при зареждане на .qml файловете. Опитайте например следното:


==Езика <span class="caps">QML</span>==
<code>
import QtQuick 1.0


<span class="caps">QML</span> е декларативен език, който описва йерархия от обекти. Дървото на обектите се създава при зареждане на <span class="caps">QML</span> файла. И на всеки обект се присвояват стойности на неговите свойства. Свойствата се изчисляват чрез константи или JavaScript изрази. Свойствата, дадени като израз на JavaScript изрази, се преизчисляват, ако някое от свойствата, използвано в израза, се промени. Тази концепция за деклариране на свойства, които зависят едно от друго и се обновяват на момента, се нарича '''обвързване на свойствата''' ('''property binding''').<br /><span class="caps">QML</span> се смята за разширение на JavaScript, но той всъщност е и подобрение. Докато JavaScript е ““патешки” език”:en.wikipedia.org http://en.wikipedia.org/wiki/Duck_typing , <span class="caps">QML</span> прави проверка на основните типове и проверка на синтаксиса при зареждане на .qml файловете. Опитайте например следното:
Rectangle {
 
color: 0
 
}
</code>


При зареждането на този файл в ''qmlviewer'' ще получите несъответствие на тип:
При зареждането на този файл в ''qmlviewer'' ще получите несъответствие на тип:


Освен това в <span class="caps">QML</span> не ви е позволено да променяте глобален обект. Това често се случва по случайност, когато забравите да декларирате локална променлива с помощта на var.
<code>
file:///home/frank/gitorious/qml-demos/MyRectangle.qml:3:12: Invalid property assignment: color expected
 
color: 0
</code>
 
Освен това в QML не ви е позволено да променяте глобален обект. Това често се случва по случайност, когато забравите да декларирате локална променлива с помощта на var.
 
Освен тези малки подобрения, JavaScript синтаксисa е напълно съвместим с JavaScript-а, използван в уеб браузърите. Можете да използвате вградените обекти като ''Date'', ''Number'' или ''Math''. Можете да пишете JavaScript код в отделни файлове и да ги импортирате в QML. Можете също така да деклариратe JavaScript функции в рамките на вашите компоненти. Обърнете внимание на следния пример:
 
<code>
import QtQuick 1.0
 
Rectangle {
 
width: 100; height: 100


Освен тези малки подобрения, JavaScript синтаксисa е напълно съвместим с JavaScript-а, използван в уеб браузърите. Можете да използвате вградените обекти като ''Date'', ''Number'' или ''Math''. Можете да пишете JavaScript код в отделни файлове и да ги импортирате в <span class="caps">QML</span>. Можете също така да деклариратe JavaScript функции в рамките на вашите компоненти. Обърнете внимание на следния пример:
color: red(0.5)


Тук имаме обявена функцията ''red'' за изчисляване на червени тонове.
Rectangle {
 
anchors.verticalCenter: parent.verticalCenter
 
width: parent.width / 2
 
height: parent.height / 2
 
color: red(1.)
 
}
 
function red(v) { return '#''' Math.floor(v''' 255).toString(16)'' '0000'; }


==Стандартни компоненти в Qt Quick==
}
</code>


''QtQuick'' библиотеката предоставя богат набор от анимации, елементи за показване на изображения, елементи за въвеждане на данни и ''Model-View'' елементи. Има възможност за подреждане на елементите чрез закотвяне и позициониращи елементи, но няма компоненти от високо ниво като бутони или ленти с инструменти. В момента се разработват така наречените [http://developer.qt.nokia.com/wiki/Qt_Quick_Components Qt Components] ''[developer.qt.nokia.com]'' за предоставяне на такива компоненти.
Тук имаме обявена функцията ''red'' за изчисляване на червени тонове.


===Categories:===
== Стандартни компоненти в Qt Quick ==


* [[:Category:Developing with Qt|Developing_with_Qt]]
''QtQuick'' библиотеката предоставя богат набор от анимации, елементи за показване на изображения, елементи за въвеждане на данни и ''Model-View'' елементи. Има възможност за подреждане на елементите чрез закотвяне и позициониращи елементи, но няма компоненти от високо ниво като бутони или ленти с инструменти. В момента се разработват така наречените [http://developer.qt.nokia.com/wiki/Qt_Quick_Components Qt Components] за предоставяне на такива компоненти.
** [[:Category:Developing with Qt::Qt Quick|Qt_Quick]]
* [[:Category:Developing with Qt::Qt Quick::Tutorial|Tutorial]]

Latest revision as of 12:24, 17 April 2015

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Български English Русский


Въведение в Qt Quick

За Qt Quick

Потребителски интерфейси, разработени в Qt Quick се създават като правоъгълни елементи във визуални дървета. Технологията е ограничена до набор от елементи, фокусирайки се върху взаимодействия чрез докосване и жестове. Qt Quick въвежда нова концепция за моделиране на логиката в приложението чрез йерархични стейт машини. Освен това преходи и богат набор от анимации(tweens), спомогат за лесното създаване на привлекателни и удобни интерфейси.

Въпреки, че уеб разработчиците по-често гледат на себе си като дизайнери, а за повечето софтуерни разработчици програмирането е изкуство, все още има голяма празина да се прескачи, ако дизайнерите искат да участват в процеса на разработка с Qt и C+. C, все пак, е език от ниско ниво, насочен към системното програмиране и програмирането за вградени системи. Qt Quick бе разработен, точно за да запълни тази празнина. Неговата цел е разработката на потребителски интерфейси. Той поставя декларативен слой над JavaScript, който прилича на Cascading Style Sheets (CSS). Така няма да ви се налага да се притеснявате много за преобразуване на типове, указатели или живот на обектите. Вместо това фокусът пада върху създаването на привлекателни и удобни потребителски интерфейси.

Терминология

Преди да започнем да работим с Qt Quick, нека си изясним някои термини. Изглежда, че всички говорят за Qt Quick тези дни, и тъй като технологията все още е нова, има много неясноти около нея.

Преди всичко, Qt Quick, QtQuick и QML са различни неща! Qt Quick и QML често се използват като взаимозаменяеми, което не е съвсем правилно. QML е езикът, QtQuick (без интервал) е името на стандартната библиотека, а Qt Quick (с интервал) се отнася до технологията като цяло. QML като език, дава възможност за деклариране на йерархии от обекти и логиката, базирана на стейт машини. Той може да се използва и в други области освен дизайна на потребителския интерфейс.

Инсталиране и настройване на среда за разработка

Започвайки от версия 4.7, Qt идва с Qt Quick. Можете да редактирате QML файлове с любимия си редактор, но Qt Creator ви предлага повече възможности. Qt също така предоставя и новия инструмент "qmlviewer", който ви позволява да изпълнявате QML файлове. Започвайки от версия 2.1, Qt Creator поддържа специален режим за дизайн на QML. В зависимост от това за коя платформа ще разработвате, можете да си изберете какво да се инсталира. Qt Quick също така е включен в последните SDK на Nokia и Meego/AppUp. Друг вариант е да инсталирате на Qt с любимият си пакетен миниджър и да настроите вашия редактор да оцветява QML файловете (. qml) като JavaScript или CSS. От Маверик ( Убунту 10.10), Qt 4.7 и qmlviewer са включени като пакетите libqt4-dev и qt4-qmlviewer.

Пример

Ще започнем с най-проста програма, показваща известното съобщение "Hello, world!". За да стартирате файла, бъдете сигурни, че имате инсталиран qmlviewer. Това лесно може да се тества като напишете в конзолата "qmlviewr —v". Ако искате да използвате QtCreator, просто изберете File-> New File or Project-> Qt Quick Project-> Qt Quick UI. Поставете изходния код и натиснете върху големият триъгълен бутон в долния ляв ъгъл или използвайте клавишната комбинация Ctrl+R.

// HelloWorld.qml
import QtQuick 1.0
Rectangle {
 color: "beige"
 width: 100; height: 100
 Text {
 anchors.centerIn: parent
 color: "chocolate"
 text: "Hello, world!"
 }
 MouseArea {
 anchors.fill: parent
 onClicked: Qt.quit()
 }
}

Първият ред е само коментар. Синтаксисът е същият както в C + . Линии, започващи с / / и текст, затворен в / * … * / се игнорират. Втората линия вмъква стандартната библиотека с всички компоненти по подразбиране: Rectangle, Image, Text, MouseArea, Flickable, … и т.н. Третият ред създава главния елемент на нашата визуална йерархия. Rectangle елемента просто показва правоъгълник, изпълнен с определен цвят и евентуално заоблени ръбове. За цвят може да се използва всяко от имената на цветове в SVG или да се посочи директно RGB код. В нашия пример бихме могли да използваме #F5F5DC вместо "beige"(бежово). Размерите на правоъгълника са зададени със свойствата width и height. За всеки визуален елемент можете да укажете геометрията му чрез x, y, width и height в брой на пиксели. Най-често това е необходимо само за елемента от най-високо ниво и за анимираните елементи. След това добавяме два дъщерни елемента: Text и MouseArea. За да ги поставим, където искаме, използваме "anchors" (котви). Центърът на текста е закотвен в центъра на родителя. Опитайте да преоразмерите прозореца, за да се проверите това. Вторият елемент е MouseArea, който е закотвен, така че напълно да препокрие родителския елемент. MouseArea е един от невидимите елементи за прихващане на действия от потребителя. Той се нарича MouseArea, но също така засича и допир на устройства със сензорен екран. Накрая MouseArea започва да слуша за събитието onClicked, което извиква функция за изключване на Qt Quick приложението.

Езика QML

QML е декларативен език, който описва йерархия от обекти. Дървото на обектите се създава при зареждане на QML файла. И на всеки обект се присвояват стойности на неговите свойства. Свойствата се изчисляват чрез константи или JavaScript изрази. Свойствата, дадени като израз на JavaScript изрази, се преизчисляват, ако някое от свойствата, използвано в израза, се промени. Тази концепция за деклариране на свойства, които зависят едно от друго и се обновяват на момента, се нарича обвързване на свойствата (property binding). QML се смята за разширение на JavaScript, но той всъщност е и подобрение. Докато JavaScript е ""патешки" език":en.wikipedia.org http://en.wikipedia.org/wiki/Duck_typing , QML прави проверка на основните типове и проверка на синтаксиса при зареждане на .qml файловете. Опитайте например следното:

import QtQuick 1.0

Rectangle {

 color: 0

}

При зареждането на този файл в qmlviewer ще получите несъответствие на тип:

file:///home/frank/gitorious/qml-demos/MyRectangle.qml:3:12: Invalid property assignment: color expected 

 color: 0

Освен това в QML не ви е позволено да променяте глобален обект. Това често се случва по случайност, когато забравите да декларирате локална променлива с помощта на var.

Освен тези малки подобрения, JavaScript синтаксисa е напълно съвместим с JavaScript-а, използван в уеб браузърите. Можете да използвате вградените обекти като Date, Number или Math. Можете да пишете JavaScript код в отделни файлове и да ги импортирате в QML. Можете също така да деклариратe JavaScript функции в рамките на вашите компоненти. Обърнете внимание на следния пример:

import QtQuick 1.0

Rectangle {

 width: 100; height: 100

 color: red(0.5)

 Rectangle {

 anchors.verticalCenter: parent.verticalCenter

 width: parent.width / 2

 height: parent.height / 2

 color: red(1.)

 }

 function red(v) { return '#''' Math.floor(v''' 255).toString(16)'' '0000'; }

}

Тук имаме обявена функцията red за изчисляване на червени тонове.

Стандартни компоненти в Qt Quick

QtQuick библиотеката предоставя богат набор от анимации, елементи за показване на изображения, елементи за въвеждане на данни и Model-View елементи. Има възможност за подреждане на елементите чрез закотвяне и позициониращи елементи, но няма компоненти от високо ниво като бутони или ленти с инструменти. В момента се разработват така наречените Qt Components за предоставяне на такива компоненти.