Update copyright headers
[qt:qt.git] / doc / src / getting-started / how-to-learn-qt.qdoc
1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
5 **
6 ** This file is part of the documentation of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:FDL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see http://www.qt.io/terms-conditions. For further
15 ** information use the contact form at http://www.qt.io/contact-us.
16 **
17 ** GNU Free Documentation License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Free
19 ** Documentation License version 1.3 as published by the Free Software
20 ** Foundation and appearing in the file included in the packaging of
21 ** this file.  Please review the following information to ensure
22 ** the GNU Free Documentation License version 1.3 requirements
23 ** will be met: http://www.gnu.org/copyleft/fdl.html.
24 ** $QT_END_LICENSE$
25 **
26 ****************************************************************************/
27
28 /*!
29     \page how-to-learn-qt.html
30     \title How to Learn Qt
31     \brief Links to guides and resources for learning Qt.
32     \nextpage Tutorials
33
34     \section1 Required programming skills
35
36     Qt is an application development framework based on C++. Traditionally, C++ is the major programming language used to develop with Qt.
37
38     Since the introduction of Qt Quick (Qt UI Creation Kit) in the beginning of 2011, Qt has been supporting script-based declarative programming with QML. QML is very easy to understand for anybody who is familiar with JavaScript as well as for all other developers who are familiar the basics of object oriented programming and have worked with other scripting languages. Designers who are familiar with web development can start with QML and implement their ideas in executable code which can later be powered by more application logic developed by engineering teams.
39
40     A solid understanding of the basics of C++ is essential for those planning on using Qt for C++. You do not need to be a C++ expert to begin. Qt simplifies many aspects of C++ development, making it a lot of fun. The overall development effort is minimal since Qt API are easy to understand and application functionality can be implemented with a smaller amount of code. C++ experts will find a lot of powerful APIs and tools in Qt which will make complicated things simple and new features easy to get done.
41
42     Various bindings have been developed by the Qt community for other programming languages. See the \l{Qt Language Bindings on Wiki}{this wiki page on Qt Developer Network} for more information about using other programming languages with Qt.
43
44     \section1 Tools to install
45
46     Qt provides a range of tools for all steps in application development for desktops and devices. Tools are integrated into packages that are easily installed on several platforms. You have following options:
47
48     \list
49     \o  \l{Qt SDK Product Page}{Qt SDK} - one package with all the tools you need for the creation of applications for Symbian and Maemo in addition to desktop platforms such as Microsoft Windows, Mac OS X, and Linux.
50     \o  \l{Qt Creator Product Page}{Qt Creator} - a cross-platform integrated development environment (IDE). Note, that the Qt Creator package does not contain the Qt framework itself. You can either configure it to use with a version of Qt already installed on your machine or download a new version of Qt separately.
51     \o  \l{Product Overview}{Qt} binary package - a ready-to-go installer for Mac, Linux and Windows containing a precompiled tool chain, libraries, include files, documentation, demos and examples.
52     \o  \l{Product Overview}{Qt} source code packages - Qt and Qt creator are available in source code as zip or tar archives as well as on the \l{Public Qt Repository}.
53     \endlist
54
55     All packages above are available for download on the \l{Downloads} page. We recommend starting with Qt SDK since it contains all you need in one package. Later on you can consider installing other packages separately. They can all coexist on your machine and be configured to work with each other.
56
57     \section1 Examples in action
58
59     One of the most popular ways of discovering new technologies is to walk through examples.
60
61     Qt provides a large selection of examples and demos which are available in source code (check \c demos and \c examples directories in your installation).The main difference between examples and demos is that examples are smaller and more focused on one functionality whereas demos are complete, more complex applications using many Qt features.
62
63     Most of the examples and demos are precompiled and integrated into the \l{Examples and Demos Launcher}.
64
65     \div {class="float-left"}
66     \inlineimage qtdemo-small.png
67     \enddiv
68
69     Run it and see Qt's features in action. You can also start all examples and demos from it as separate applications or browse to the source code. \l{Qt Creator Product Page}{Qt Creator} allows loading of examples as projects with a wizard on the "Welcome" page.
70
71     Additionally, \l{Qt Widget Gallery} provides overviews of selected Qt desktop widgets in each of the styles used on various supported platforms.
72     \clearfloat
73
74     If you are new to Qt, you should first take a look on the following examples:
75
76     \list
77     \o  \l{Calculator Example}
78     \o  \l{Application Example}
79     \o  \l{Image Viewer Example}
80     \o  \l{Basic Drawing Example}
81     \endlist
82
83     \section1 Qt technology guides
84
85     At some point you should take some time to walk through the Qt technology guides and overviews provided in Qt documentation. Qt is simple to use, but you should have a basic understanding of the key concepts behind Qt to reveal its full power. There is a large selection of documents that are sorted into the following sections:
86
87     \list
88     \o  \l{Programming with Qt} - about key components and technologies used in Qt development
89     \o  \l{Cross-platform and Platform-specific Development} and \l{Platform-Specific Documentation} - using Qt on different platforms
90     \o  \l{Qt Quick} - a home page of Qt Quick in Qt documentation
91     \o  \l{UI Design with Qt} - specifics of desktop UI development
92     \o  \l{Qt and Key Technologies} - how Qt addresses industry standards and also how they are used in Qt
93     \o  \l{Best Practice Guides} - a collection of various tips and hints
94     \endlist
95
96     The following guides are essential for those new to Qt:
97
98     \list
99     \o  \l{Object Model}
100     \o  \l{Object Trees & Ownership}
101     \o  \l{Signals & Slots}
102     \o  \l{The Event System}
103     \o  \l{Implicit Sharing}
104     \o  \l{Container Classes}
105     \o  \l{Internationalization with Qt}
106     \o  \l{Coordinate System}
107     \o  \l{Paint System}
108     \o  \l{Network Programming}
109     \o  \l{The Qt Resource System}
110     \endlist
111
112     The \l{Develop with Qt} guide provides a good overview of all topics in Qt development and includes links to the section mentioned above as well as many more advanced aspects.
113
114     \section1 Tutorials
115
116     Compared to examples, tutorials walk you through the development steps of an application and show how to use Qt to implement required functionality. Some Qt tutorials also explain specific details of selected Qt features.
117
118     The \l{Getting Started Programming with Qt} tutorial is a good start for all who are new to Qt. In this tutorial you will develop a simple text editor and go through the major steps of developing of a Qt application.
119
120     Desktop developers should then proceed to the \l{Widgets Tutorial} as well as the \l{Address Book Tutorial}.
121
122     Many Qt developers use Qt Designer to compose desktop UIs in a visual editor. Take a look the \l{Qt Designer manual} to learn more about this.
123
124     The \l{Tutorials} page contains a list of all tutorials provided in Qt documentation.
125
126     \section1 Getting most of Qt documentation
127
128     Qt comes with extensive documentation, with hypertext
129     cross-references throughout so you can easily click your way to
130     whatever interests you. The part of the documentation that you'll
131     probably use the most is the \link index.html API
132     Reference\endlink. Each link provides a different way of
133     navigating the API Reference. Try them all to see which work best
134     for you.
135
136     The \l{All Overviews and HOWTOs} page lists all Qt technology overviews and HOWTOs in one please. This includes the overviews mentioned above, but also lists several addtional references (e.g. starting pages of all Qt modules, most of which contain a short introduction to a given module).
137
138     You can find Qt documentation either directly integrated into Qt tools as well as \l{Qt Docs Web Start Page}{here}. The advantage of Qt documentation provided in tools is that it is stored on your machine and is available offline. The Qt documentation web site provides access to documentation from different Qt versions as well as the latest snapshot. Qt tools provide search functionality over the index of content as well as free text search. Advanced searches can also be conducted in Qt documentation through the use of search engines. Just limit the search to \c doc.qt.nokia.com and review help topics provided by the search engine you're using to know how to write more advanced search queries.
139
140     The most of the content in Qt documentation is in the documentation of Qt APIs. This includes a lot of code snippets showing how to implement a functionality with Qt APIs. A good example of this is the documentation on the \l{QString} class.
141
142     Make sure to take a look at the following reference documentation since they contain a lot of important details:
143     \list
144     \o  \l{Qt Namespace} - contains a log of frequently used static variables
145     \o  \l{Global Qt Declarations} - to get an overview of available standard types, macros, and static functions
146     \endlist
147
148     \section1 Get advice and support from the Qt Community
149
150     Qt has an active and helpful user community who communicate using
151     the various means:
152
153     \list
154     \o  \l{Qt Mailing Lists}{qt-interest} Mailing list
155     \o  \l{Qt Centre} Website
156     \o  \l{Forums on Qt Developer Network}
157     \o  \l{Wiki on Qt Developer Network} written by the Qt community and hosted on the Qt Developer Network
158     \o  The \c #qt and \c #qt-creator IRC channels on \c irc.freenode.org
159     \endlist
160
161     In addition, many Qt developers are active members of the \l{KDE}{KDE community}.
162
163     \section1 Training
164
165     In many cases people prefer attending professional training courses to boost their learning progress. A training course has two unique benefits: Its scope can be adapted to your needs and you will get helped on the spot by Qt trainers who are also experienced Qt developers. \l{Qt Training Partners} offer a wide range of courses. Most courses are based on materials developed by the Qt team.
166
167     There are two types of courses: open enrollment and on-site. \l{Open Enrollment Qt Training Courses}{Open enrollment courses} are public courses open to anybody. They are a good choice for an individual developers or small groups. If you have a large Qt project, on-site training is a better choice and can be more cost efficient. You can request your own agenda for on-site training whereas open enrollment courses have a predefined agenda and scope valid for all attendees.
168
169     \section1 Listen to Qt experts on videos
170
171     A wide range of videos is available on the \l{Qt Video Portal} on the Qt Developer Network. Most of the videos are recordings of talks given by Qt experts at Qt Developer Days. You can use categories and tags to find videos which cover the scope of your needs.
172
173     Another part of the videos are recordings of training sessions recorded at Qt Developer Days:
174     \list
175     \o  Qt Essentials, by ICS: (part \l{Qt Essentials by ICS part 1}{1} and \l{Qt Essentials by ICS part 1}{2}) and KDAB: (part \l{Qt Essentials by KDAB part 1}{1} and \l{Qt Essentials by KDAB part 2}{2})
176     \o  \c QGraphicsView, \l{QGraphicsView by ICS}{session by ICS} and \l{QGraphicsView by ICS}{session by KDAB}
177     \o  Multithreading, \l{Multithreading by ICS}{session by ICS} and \l{Multithreading by KDAB}{session by KDAB}
178     \o  UI Development with Qt, \l{UI Development with Qt by ICS}{session by ICS} and \l{UI Development with Qt by KDAB}{session by KDAB}
179     \o  Embedded Development, \l{Embedded Development by basysKom}{session by basysKom} and \l{Embedded Development by ICS}{session by ICS}
180     \o  Model/View Programming, \l{ModelView Programming by basysKom}{session by basysKom} and \l{ModelView Programming by KDAB}{session by KDAB}
181     \o  \c QWebKit, \l{QWebKit by KDAB}{by KDAB}
182     \o  Qt Quick, by KDAB: part \l{Quick by KDAB part 1}{1}, \l{Quick by KDAB part 2}{2}, \l{Quick by KDAB part 3}{3}, \l{Quick by KDAB part 4}{4}
183     \o  Qt Mobile Development for Nokia Devices, by Digia: part \l{Qt Mobile Development for Nokia Devices by Digia part 1}{1}, \l{Qt Mobile Development for Nokia Devices by Digia part 2}{2}, \l{Qt Mobile Development for Nokia Devices by Digia part 3}{3}
184     \endlist
185
186     Additionally, there are recordings of the Qt Essentials training modules:
187     \list
188     \o  Fundamentals of Qt, part \l{Qt Essentials - Fundamentals of Qt part 1}{1} and \l{Qt Essentials - Fundamentals of Qt part 2}{2}
189     \o  Application Creation, part \l{Qt Essentials - Application Creation part 1}{1}, \l{Qt Essentials - Application Creation part 2}{2}, \l{Qt Essentials - Application Creation part 3}{3}
190     \o  Widgets, part \l{Qt Essentials - Widgets part 1}{1}, \l{Qt Essentials - Widgets part 2}{2}, \l{Qt Essentials - Widgets part 3}{3}
191     \o  Graphics View, part \l{Qt Essentials - Graphics View part 1}{1}, \l{Qt Essentials - Graphics View part 2}{2}, \l{Qt Essentials - Graphics View part 3}{3}
192     \o  Model/View I, part \l{Qt Essentials - Model/View I part 1}{1}, \l{Qt Essentials - Model/View I part 2}{2}, \l{Qt Essentials - Model/View I part 3}{3}, \l{Qt Essentials - Model/View I part 4}{4}
193     \o  Model/View II, , part \l{Qt Essentials - Model/View II part 1}{1}, \l{Qt Essentials - Model/View II part 2}{2}, \l{Qt Essentials - Model/View II part 3}{3}, \l{Qt Essentials - Model/View II part 4}{4}, \l{Qt Essentials - Model/View II part 5}{5}
194     \endlist
195
196     \section1 Prove your knowledge
197
198     \l{Qt Certification} publishes the scope of each exam in Qt Curriculum as "Qt Curriculum Blocks," which are available under \l{Qt Certification Exam Preparation and Prerequisites}{this link}. The Qt Essentials Curriculum Block describes the scope of knowledge which covers all of the fundamental concepts and basic features in Qt. Review this list to find out which areas of Qt you should become familiar with in order to reach a basic level of Qt expertise. If you also have at least 6 months of Qt development experience, consider taking the Qt Essentials exam and becoming a Nokia Certified Qt Developer.
199     \section1 Further Readings and Materials
200
201     A selection of training materials is available to download under \l{Download Qt training materials}{this link} which includes slides (PDF) and source code from the following three courses:
202     \list
203     \o  Qt Essentials - Widget Edition
204     \o  Qt Essentials - Qt Quick Edition
205     \o  Qt Quick for Designers
206     \endlist
207
208     \l{Qt in Education Course Material} is available to download as well. It is more tailored to the needs of educational institutions that use Qt for teaching purposes, but nonetheless provides helpful slides in various formats as well as labs and example code.
209
210     Another valuable source of example code and valuable information about Qt features is the archive of articles from \l{Qt Quarterly}, a quarterly newsletter for users of Qt.
211
212     Good luck and have fun!
213
214 */