Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
QtQuickComponentsOld: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Category:Developing_with_Qt::Qt Quick]] | |||
'''Note: this page contains outdated information, please see [[ | = 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 & 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 & touch UIs which respect the native look & 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 "API Development Process&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. = | |||
== The Components == | |||
==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 | 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 | 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 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 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 & Building Source Code=== | === Getting & 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 | Check out source code with<br /><code><br />git clone <URL&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 <code&gt;sudo make install&lt;/code&gt; | ||
===Usage & Viewing Examples=== | === Usage & Viewing Examples === | ||
Todo | Todo | ||
===Bug tracking=== | === Bug tracking === | ||
Please report any bugs found in <bug tracker>. We encourage attaching a simple qml file to the bug report which displays the problem. | 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=== | === Collaborating with us === | ||
Mail: | Mail: "qt-components<code>qt.io Mailing List&quot;:http://lists.qt.io/mailman/listinfo/qt-components<br />IRC: "#qt-components on Freenode&quot;:irc://irc.freenode.net/#qt-components<br />(For a full list of IRC channels of interest to Qt developers, see "OnlineCommunities&quot;:http://wiki.qt.io/OnlineCommunities.) | ||
=Component | = 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 | | | ||
== 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). | |||
* Process to happen on | * Once decided upon an API proposal/change documentation has to be written right away. | ||
* When making | * Enforcing a timeline around API discussion: from start of API definition to decision on it: 1 week. | ||
* Once decided upon an | * Making sure that at least one representative of each interested platform validates the API (if possible). | ||
* Enforcing a timeline around | |||
* Making sure that at least one representative of each interested platform validates the | |||
* 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 | |||
Revision as of 11:45, 24 February 2015
= Old content of 'Qt Quick Components'page
see the reference links at the end of this page for more information. =
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" section below on how this discussion will proceed. All input is welcome.
This work will be based upon the efforts of Nokia and IdNT
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 <URL&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>sudo make install</code>
Usage & Viewing Examples
Todo
Bug tracking
Please report any bugs found in <bug tracker>. We encourage attaching a simple qml file to the bug report which displays the problem.
Collaborating with us
Mail: "qt-componentsqt.io Mailing List":http://lists.qt.io/mailman/listinfo/qt-components
IRC: "#qt-components on Freenode":irc://irc.freenode.net/#qt-components
(For a full list of IRC channels of interest to Qt developers, see "OnlineCommunities":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":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