QtQuickComponentsOld: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
=Old content of ‘Qt Quick Components’-page=
[[Category:Developing_with_Qt::Qt Quick]]


'''Note: this page contains outdated information, please see [[Qt Quick Components|Qt_Quick_Components]] for the most recent'''
= Old content of 'Qt Quick Components'<s>page
<br />'''Note: this page contains outdated information, please see [[Qt_Quick_Components]] for the most recent'''
<br />This project is to create QML components to ease application UI development in QML. It has the following goals:<br />* desktop &amp; touch components<br />* easily styled for utmost visual flexibility<br />* desktop components have native look and feel<br />It is designed to serve as a reference platform for developers, incorporating good practices like accessibility support from the start.
<br />h2. Recent News
<br />During the Qt Contributors Summit 2012, Qt Quick Components were a major topic for discussion. There it was decided that a collaborative effort between Nokia, INdT, KDE, Canonical and others will occur, to deliver a set of QML components for both desktop &amp; touch UIs which respect the native look &amp; feel on the desktop, but yet are easily customised.
<br />A key task of this project is deciding APIs for these components, with the ultimate goal of having a minimal yet functionally comprehensive API. We will encourage platform developers to extend these APIs for their own requirements.
<br />Please see the &quot;API Development Process&amp;quot; section below on how this discussion will proceed. All input is welcome.
<br />This work will be based upon the efforts of Nokia and IdNT</s> see the reference links at the end of this page for more information. =


This project is to create <span class="caps">QML</span> components to ease application UI development in <span class="caps">QML</span>. It has the following goals:
== The Components ==
 
* desktop &amp; touch components
* easily styled for utmost visual flexibility
* desktop components have native look and feel<br /> It is designed to serve as a reference platform for developers, incorporating good practices like accessibility support from the start.
 
==Recent News==
 
During the Qt Contributors Summit 2012, Qt Quick Components were a major topic for discussion. There it was decided that a collaborative effort between Nokia, INdT, <span class="caps">KDE</span>, Canonical and others will occur, to deliver a set of <span class="caps">QML</span> components for both desktop &amp; touch UIs which respect the native look &amp; feel on the desktop, but yet are easily customised.
 
A key task of this project is deciding <span class="caps">API</span>s for these components, with the ultimate goal of having a minimal yet functionally comprehensive <span class="caps">API</span>. We will encourage platform developers to extend these <span class="caps">API</span>s for their own requirements.
 
Please see the “<span class="caps">API</span> Development Process” section below on how this discussion will proceed. All input is welcome.
 
This work will be based upon the efforts of Nokia and IdNT – see the reference links at the end of this page for more information.
 
==The Components==


Due to the fundamental differences between a mouse-based and a touchscreen-based UI, we divide the entire set of components into two specific sets: touch and desktop.
Due to the fundamental differences between a mouse-based and a touchscreen-based UI, we divide the entire set of components into two specific sets: touch and desktop.


===Touch Components Set===
=== Touch Components Set ===


The Touch Components Set will be a reference implementation as simple as possible. The most important thing here is defining the <span class="caps">API</span> and let developers easily create a component set for a different platform.
The Touch Components Set will be a reference implementation as simple as possible. The most important thing here is defining the API and let developers easily create a component set for a different platform.


This reference component set won’t be themable since we see it as resposability of the platform to provide what can be themed or not.<br /> Our wish is to keep it as minimal as possible.
This reference component set won't be themable since we see it as resposability of the platform to provide what can be themed or not.<br />Our wish is to keep it as minimal as possible.


It’s important to keep in mind that we want the components <span class="caps">API</span> and features to be minimal. This also provides better runtime performance, since it avoids the creation of redundant data, processing and property bindings.
It's important to keep in mind that we want the components API and features to be minimal. This also provides better runtime performance, since it avoids the creation of redundant data, processing and property bindings.


===Desktop Components Set===
=== Desktop Components Set ===


This set will contain more flexible components, since the desktop environment allows us to use more computational resources than in the mobile platforms.
This set will contain more flexible components, since the desktop environment allows us to use more computational resources than in the mobile platforms.


It is important that Qt applications are cross platform, especially on the desktop. So it’s important that they have the abilities and look and feel as platform with the same written code.
It is important that Qt applications are cross platform, especially on the desktop. So it's important that they have the abilities and look and feel as platform with the same written code.


Besides the ability of having the native look and feel, is also important that the component are styleable.
Besides the ability of having the native look and feel, is also important that the component are styleable.


==Project Details==
== Project Details ==


===Getting &amp; Building Source Code===
=== Getting &amp; Building Source Code ===


Check out source code with<br /> For Qt4.7 pull…. For Qt4.8 pull…. For Qt5 pull….<br /> The components create several C++ plugins required to interface with <span class="caps">QML</span>. To install the components into your Qt directory, simply enter the root directory and run:<br /> This will compile and copy the plugins and components into your <span class="caps">QTDIR</span>/imports folder. If you are compiling against a system Qt on linux, you might have to do a <code>sudo make install</code>
Check out source code with<br /><code><br />git clone &lt;URL&amp;gt;<br /></code><br />For Qt4.7 pull…. For Qt4.8 pull…. For Qt5 pull….<br />The components create several C++ plugins required to interface with QML. To install the components into your Qt directory, simply enter the root directory and run:<br /><code><br />qmake<br />make install<br /></code><br />This will compile and copy the plugins and components into your QTDIR/imports folder. If you are compiling against a system Qt on linux, you might have to do a &lt;code&amp;gt;sudo make install&amp;lt;/code&amp;gt;


===Usage &amp; Viewing Examples===
=== Usage &amp; Viewing Examples ===


Todo
Todo


===Bug tracking===
=== Bug tracking ===


Please report any bugs found in &lt;bug tracker&gt;. We encourage attaching a simple qml file to the bug report which displays the problem.
Please report any bugs found in &lt;bug tracker&amp;gt;. We encourage attaching a simple qml file to the bug report which displays the problem.


===Collaborating with us===
=== Collaborating with us ===


Mail: [http://lists.qt.io/mailman/listinfo/qt-components qt-components@qt.io Mailing List] ''[lists.qt.io]''<br /><span class="caps">IRC</span>: [irc://irc.freenode.net/#qt-components #qt-components on Freenode] ''[irc.freenode.net]''<br /> (For a full list of <span class="caps">IRC</span> channels of interest to Qt developers, see [[OnlineCommunities]] ''[qt.io]''.)
Mail: &quot;qt-components<code>qt.io Mailing List&amp;quot;:http://lists.qt.io/mailman/listinfo/qt-components<br />IRC: &quot;#qt-components on Freenode&amp;quot;:irc://irc.freenode.net/#qt-components<br />(For a full list of IRC channels of interest to Qt developers, see &quot;OnlineCommunities&amp;quot;:http://wiki.qt.io/OnlineCommunities.)


=Component <span class="caps">API</span>s=
= Component APIs =


Below is a table '''[under construction]''' of components identified within scope of this project, and their individual development status.<br />
Below is a table '''[under construction]''' of components identified within scope of this project, and their individual development status.<br />{background:#009900}. |''. Component |''. Summary |_. Status<br />| Label | Text String | |<br />{background:#ddd}. | Button | Simple Push Button | API being discussed |<br />| Checkbox/Switch | Button with checked property | |<br />{background:#ddd}. | RadioButton | | |<br />| ComboBox | List of selectable items | |<br />{background:#ddd}. | TextInput | Single line text input box | |<br />| TextArea | Multi-line text input box | |<br />{background:#ddd}. | Slider | | |<br />| ProgressBar | | |<br />{background:#ddd}. | ScrollBar/ScrollArea | | |<br />| BusyIndicator | UI element to indicate it is busy | |<br />{background:#ddd}. | TabBar | Row of Tabs | |


{| class="infotable line"
== API Development Process ==
|- style="background: #009900"
! Component
! Summary
! Status
|- style="background: #ddd"
| Button
| Simple Push Button
| <span class="caps">API</span> being discussed
|-
| Checkbox/Switch
| Button with checked property
|
|- style="background: #ddd"
| RadioButton
|
|
|-
| ComboBox
| List of selectable items
|
|- style="background: #ddd"
| TextInput
| Single line text input box
|
|-
| TextArea
| Multi-line text input box
|
|- style="background: #ddd"
| Slider
|
|
|-
| ProgressBar
|
|
|- style="background: #ddd"
| ScrollBar/ScrollArea
|
|
|-
| BusyIndicator
| UI element to indicate it is busy
|
|- style="background: #ddd"
| TabBar
| Row of Tabs
|
|}


==<span class="caps">API</span> Development Process==
* Process to happen on &quot;mailing list&amp;quot;:http://lists.qt.io/mailman/listinfo/qt-components.
 
* When making API proposal/change always include: API definition and real world example (from a developer standpoint).
* Process to happen on [http://lists.qt.io/mailman/listinfo/qt-components mailing list] ''[lists.qt.io]''.
* Once decided upon an API proposal/change documentation has to be written right away.
* When making <span class="caps">API</span> proposal/change always include: <span class="caps">API</span> definition and real world example (from a developer standpoint).
* Enforcing a timeline around API discussion: from start of API definition to decision on it: 1 week.
* Once decided upon an <span class="caps">API</span> proposal/change documentation has to be written right away.
* Making sure that at least one representative of each interested platform validates the API (if possible).
* Enforcing a timeline around <span class="caps">API</span> discussion: from start of <span class="caps">API</span> definition to decision on it: 1 week.
* Making sure that at least one representative of each interested platform validates the <span class="caps">API</span> (if possible).
* Try to follow Qt naming convention if unsure.
* Try to follow Qt naming convention if unsure.
* In case of unresolvable conflict of opinions, an appointed maintainer will have the last word.
* In case of unresolvable conflict of opinions, an appointed maintainer will have the last word.


==Other component libraries==
== Other component libraries ==


There are several existing open source component implementations out there. See [[QtQuickOpenComponents]] for a list of those.
There are several existing open source component implementations out there. See [[QtQuickOpenComponents]] for a list of those.


==References==
== References ==
 
Initial Project Description: https://bugreports.qt.io/browse/QTCOMPONENTS-72<br /> Initial Desktop Components Spec: https://bugreports.qt.io//browse/QTCOMPONENTS-200<br /> [Nokia] Desktop Components for Qt5:<br />https://wiki.qt.io/QtDesktopComponents<br />http://labs.qt.nokia.com/2011/03/10/qml-components-for-desktop/<br />http://labs.qt.nokia.com/2011/05/26/table-view-with-qt-quick/<br />http://labs.qt.nokia.com/2011/08/26/toplevel-windows-and-menus-with-qt-quick/<br />http://labs.qt.nokia.com/2012/06/06/desktop-components-for-qt-5/<br /> [INdT] Components work: <br />http://codecereal.blogspot.com.br/2012/04/qml-themingstyling.html<br />http://codecereal.blogspot.no/2012/05/qml-themingstyling-update.html
 
===Categories:===


* [[:Category:Developing with Qt|Developing_with_Qt]]
Initial Project Description: https://bugreports.qt.io/browse/QTCOMPONENTS-72<br />Initial Desktop Components Spec: https://bugreports.qt.io//browse/QTCOMPONENTS-200<br />[Nokia] Desktop Components for Qt5:<br />https://wiki.qt.io/QtDesktopComponents<br />http://labs.qt.nokia.com/2011/03/10/qml-components-for-desktop/<br />http://labs.qt.nokia.com/2011/05/26/table-view-with-qt-quick/<br />http://labs.qt.nokia.com/2011/08/26/toplevel-windows-and-menus-with-qt-quick/<br />http://labs.qt.nokia.com/2012/06/06/desktop-components-for-qt-5/<br />[INdT] Components work:<br />http://codecereal.blogspot.com.br/2012/04/qml-themingstyling.html
** [[:Category:Developing with Qt::Qt-Quick|Qt Quick]]

Revision as of 11:45, 24 February 2015


= Old content of 'Qt Quick Components'page
Note: this page contains outdated information, please see Qt_Quick_Components for the most recent
This project is to create QML components to ease application UI development in QML. It has the following goals:
* desktop & touch components
* easily styled for utmost visual flexibility
* desktop components have native look and feel
It is designed to serve as a reference platform for developers, incorporating good practices like accessibility support from the start.
h2. Recent News
During the Qt Contributors Summit 2012, Qt Quick Components were a major topic for discussion. There it was decided that a collaborative effort between Nokia, INdT, KDE, Canonical and others will occur, to deliver a set of QML components for both desktop & touch UIs which respect the native look & feel on the desktop, but yet are easily customised.
A key task of this project is deciding APIs for these components, with the ultimate goal of having a minimal yet functionally comprehensive API. We will encourage platform developers to extend these APIs for their own requirements.
Please see the "API Development Process&quot; section below on how this discussion will proceed. All input is welcome.
This work will be based upon the efforts of Nokia and IdNT
see the reference links at the end of this page for more information. =

The Components

Due to the fundamental differences between a mouse-based and a touchscreen-based UI, we divide the entire set of components into two specific sets: touch and desktop.

Touch Components Set

The Touch Components Set will be a reference implementation as simple as possible. The most important thing here is defining the API and let developers easily create a component set for a different platform.

This reference component set won't be themable since we see it as resposability of the platform to provide what can be themed or not.
Our wish is to keep it as minimal as possible.

It's important to keep in mind that we want the components API and features to be minimal. This also provides better runtime performance, since it avoids the creation of redundant data, processing and property bindings.

Desktop Components Set

This set will contain more flexible components, since the desktop environment allows us to use more computational resources than in the mobile platforms.

It is important that Qt applications are cross platform, especially on the desktop. So it's important that they have the abilities and look and feel as platform with the same written code.

Besides the ability of having the native look and feel, is also important that the component are styleable.

Project Details

Getting & Building Source Code

Check out source code with

<br />git clone &lt;URL&amp;gt;<br />


For Qt4.7 pull…. For Qt4.8 pull…. For Qt5 pull….
The components create several C++ plugins required to interface with QML. To install the components into your Qt directory, simply enter the root directory and run:

<br />qmake<br />make install<br />


This will compile and copy the plugins and components into your QTDIR/imports folder. If you are compiling against a system Qt on linux, you might have to do a <code&gt;sudo make install&lt;/code&gt;

Usage & Viewing Examples

Todo

Bug tracking

Please report any bugs found in <bug tracker&gt;. We encourage attaching a simple qml file to the bug report which displays the problem.

Collaborating with us

Mail: "qt-componentsqt.io Mailing List&quot;:http://lists.qt.io/mailman/listinfo/qt-components
IRC: "#qt-components on Freenode&quot;:irc://irc.freenode.net/#qt-components
(For a full list of IRC channels of interest to Qt developers, see "OnlineCommunities&quot;:http://wiki.qt.io/OnlineCommunities.)

Component APIs

Below is a table [under construction] of components identified within scope of this project, and their individual development status.
{background:#009900}. |. Component |. Summary |_. Status
| Label | Text String | |
{background:#ddd}. | Button | Simple Push Button | API being discussed |
| Checkbox/Switch | Button with checked property | |
{background:#ddd}. | RadioButton | | |
| ComboBox | List of selectable items | |
{background:#ddd}. | TextInput | Single line text input box | |
| TextArea | Multi-line text input box | |
{background:#ddd}. | Slider | | |
| ProgressBar | | |
{background:#ddd}. | ScrollBar/ScrollArea | | |
| BusyIndicator | UI element to indicate it is busy | |
{background:#ddd}. | TabBar | Row of Tabs | |

API Development Process

  • Process to happen on "mailing list&quot;:http://lists.qt.io/mailman/listinfo/qt-components.
  • When making API proposal/change always include: API definition and real world example (from a developer standpoint).
  • Once decided upon an API proposal/change documentation has to be written right away.
  • Enforcing a timeline around API discussion: from start of API definition to decision on it: 1 week.
  • Making sure that at least one representative of each interested platform validates the API (if possible).
  • Try to follow Qt naming convention if unsure.
  • In case of unresolvable conflict of opinions, an appointed maintainer will have the last word.

Other component libraries

There are several existing open source component implementations out there. See QtQuickOpenComponents for a list of those.

References

Initial Project Description: https://bugreports.qt.io/browse/QTCOMPONENTS-72
Initial Desktop Components Spec: https://bugreports.qt.io//browse/QTCOMPONENTS-200
[Nokia] Desktop Components for Qt5:
https://wiki.qt.io/QtDesktopComponents
http://labs.qt.nokia.com/2011/03/10/qml-components-for-desktop/
http://labs.qt.nokia.com/2011/05/26/table-view-with-qt-quick/
http://labs.qt.nokia.com/2011/08/26/toplevel-windows-and-menus-with-qt-quick/
http://labs.qt.nokia.com/2012/06/06/desktop-components-for-qt-5/
[INdT] Components work:
http://codecereal.blogspot.com.br/2012/04/qml-themingstyling.html