qtcreator.qdoc 79.9 KB
Newer Older
1 2 3 4 5 6
// **********************************************************************
// NOTE: the sections are not ordered by their logical order to avoid
// reshuffling the file each time the index order changes (i.e., often).
// Run the fixnavi.pl script to adjust the links to the index order.
// **********************************************************************

con's avatar
con committed
7 8 9
/*!
    \contentspage{index.html}{Qt Creator}
    \page index.html
10
    \nextpage creator-quick-tour.html
con's avatar
con committed
11 12 13

    \title Qt Creator Manual

con's avatar
con committed
14
    \section1 Version 1.3.80
con's avatar
con committed
15 16 17 18 19

    The goal of Qt Creator is to provide a cross-platform, complete Integrated
    Development Environment (IDE) to develop Qt projects. It is available for
    the Linux, Mac OS X and Windows platforms.

20
    \note Please report bugs and suggestions to the
con's avatar
con committed
21
    \l{http://bugreports.qt.nokia.com}{Qt Bug Tracker}.
22 23 24 25 26
    You can also join the Qt Creator mailing list. To subscribe,
    send a message with the word \e subscribe to
    \l{mailto:qt-creator-request@trolltech.com}
    {qt-creator-request@trolltech.com}. For more information on Qt mailing
    lists, visit \l{http://lists.trolltech.com}{http://lists.trolltech.com}.
con's avatar
con committed
27

28 29
    \raw HTML
    <img border="0" style="float:right;" src="images/qtcreator-screenshots.png" />
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
30
    \endraw
31

con's avatar
con committed
32
    \list
33 34 35
       \o   \l{A Quick Tour of Qt Creator}
       \o   \l{Creating a Project in Qt Creator}
       \o   \l{Writing a Simple Program with Qt Creator}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
36 37
       \o   \l{The Code Editor}
       \o   \l{Navigating Around Your Code with Locator}
38
       \o   \l{Session Management in Qt Creator}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
39 40
       \o   \l{Qt Version Management}
       \o   \l{Project Settings}
41 42
       \o   \l{CMake Support in Qt Creator}
       \o   \l{Support for Generic Projects in Qt Creator}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
43
       \o   \l{External Libraries}
44
       \o   \l{Development of Qt for Symbian Based Applications}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
45 46
       \o   \l{Qt Creator and Debugging}
       \o   \l{Qt Creator and Version Control Systems}
47 48 49 50
       \o   \l{Tips and Tricks}
       \o   \l{Keyboard Shortcuts}
       \o   \l{Glossary}
       \o   \l{Supported Platforms}
51
       \o   \l{Known Issues}
52
       \o   \l{Acknowledgements}
con's avatar
con committed
53 54 55
    \endlist
*/

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
56

con's avatar
con committed
57 58
/*!
    \contentspage index.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
59
    \previouspage index.html
con's avatar
con committed
60
    \page creator-quick-tour.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
61
    \nextpage creator-creating-project.html
con's avatar
con committed
62

63
    \title A Quick Tour of Qt Creator
con's avatar
con committed
64

65 66
    The labeled screenshot below shows some of the components of Qt Creator, in
    \gui Edit mode.
con's avatar
con committed
67 68 69

    \image qtcreator-breakdown.png

Kavindra Palaraja's avatar
Kavindra Palaraja committed
70
    \section1 The Mode Selectors
con's avatar
con committed
71

72 73
    When working in Qt Creator, you can be in one of six modes: \bold Welcome,
    \bold Edit, \bold Debug, \bold Projects, \bold Help, and \bold Output.
con's avatar
con committed
74

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
75
    Mode selectors allow you to quickly switch between tasks: editing, browsing
76
    the Qt Creator manual, setting up the build environment, etc. You can
con's avatar
con committed
77
    activate a mode by either clicking on its mode selector, or using the
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
78 79
    \l{keyboard-shortcuts}{corresponding keyboard shortcut}. Certain actions also
    trigger a mode change, e.g., \gui{Debug}/\gui{Start debugging} switches
con's avatar
con committed
80 81 82 83
    to the \gui Debug mode.

    \list

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
84 85 86
    \o \gui{Welcome mode} - Displays a welcome screen allowing you to quickly
    load sessions or recent individual projects. This is the mode displayed
    when Qt Creator is run without command line switches.
con's avatar
con committed
87

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
88 89
    \o \gui{Edit mode} - Lets you edit both project and source files. A sidebar
    on the left provides different views for navigating between files.
con's avatar
con committed
90

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
91 92
    \o \gui{Debug mode} - Provides various ways to inspect the state of the
    program while debugging. See \l{Qt Creator and Debugging} for a hands-on
93
    description of how to use this mode.
con's avatar
con committed
94

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
95
    \o \gui{Projects mode} - Lets you configure how projects can be built and
96
    executed. Under the list of projects, there are tabs to configure the
97
    build, run, and editor settings.
con's avatar
con committed
98

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
99
    \o \gui{Help mode} - Shows all documentation registered by Qt Assistant,
con's avatar
con committed
100 101
    such as the Qt library and Qt Creator documentation.

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
102
    \o \gui{Output mode} - Lets you examine various data in detail, for example
103 104
    build issues as well as compile and application output. This information
    is also available in the output panes.
con's avatar
con committed
105 106 107 108 109 110

    \endlist


    \section1 The Output Panes

111 112
    The task pane in Qt Creator can display one of four different panes:
    \gui{Build Issues}, \gui{Search Results}, \gui{Application Output}, and
113
    \gui{Compile Output}. These panes are available in all modes.
con's avatar
con committed
114

115

116
    \section2 Build Issues
con's avatar
con committed
117

118 119
    The \gui{Build Issues} pane provides a list of issues, e.g., error messages
    or warnings that need to be fixed. It filters out irrelevant output from
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
120
    the compiler and presents the issues in an organized way.
con's avatar
con committed
121

122
    \image qtcreator-build-issues.png
con's avatar
con committed
123

124

con's avatar
con committed
125 126
    \section2 Search Results

127 128 129 130
    The \gui{Search Results} pane displays the results for global searches such
    as searching within a current document, files on disk, or all projects. In
    the screenshot below, we searched for all occurrences of \c{textfinder}
    within the \c{"/TextFinder"} folder.
con's avatar
con committed
131 132 133

    \image qtcreator-search-pane.png

134

con's avatar
con committed
135 136
    \section2 Application Output

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
137 138
    The \gui{Application Output} pane displays the status of a program when
    it is executed, and the debug output, e.g., output from qDebug().
con's avatar
con committed
139 140 141

    \image qtcreator-application-output.png

142

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
143
    \section2 Compile Output
con's avatar
con committed
144

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
145 146
    The \gui{Compile Output} pane provides all output from the compiler. In
    other words, it is a more detailed version of information displayed in the
147
    \gui{Build Issues}
con's avatar
con committed
148 149 150

    \image qtcreator-compile-pane.png

151

con's avatar
con committed
152 153 154
    \section1 Qt Help Integration

    Qt Creator comes fully integrated with all of Qt's documentation and
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
155 156
    examples via the Qt Help plugin. To view the documentation, switch
    to the \gui{Help} mode. To obtain context sensitive help, move the text
con's avatar
con committed
157
    cursor to a Qt class or function and press \key{F1}. The documentation
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
158 159
    is displayed in a pane on the right, as shown in the screenshot
    below. If there is enough vertical space, it is shown in the
160
    fullscreen help mode.
con's avatar
con committed
161 162 163

    \image qtcreator-context-sensitive-help.png

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
164 165 166
    External documentation provided by the user can be used to augment or
    replace the documentation shipped with Qt Creator and Qt.

con's avatar
con committed
167 168 169 170

    \section1 Qt Designer Integration

    Qt Creator is fully integrated with Qt Designer to help you design user
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
171
    interface forms like you would with the standalone version. The Qt
con's avatar
con committed
172
    Designer integration also includes project management and code completion.
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
173
    For more information on Qt Designer, see
174
    \l{http://doc.trolltech.com/designer-manual.html}{The Designer Manual}.
con's avatar
con committed
175 176 177 178 179

    \image qtcreator-formedit.png


    \section1 Keyboard Navigation
180

181 182 183
    Qt Creator caters not only to developers who are used to using the mouse,
    but also to developers who are more comfortable with the keyboard. A wide
    range of \l{keyboard-shortcuts}{keyboard} and
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
184
    \l{Navigating Around Your Code with Locator}{navigation} shortcuts
185
    are available to help speed up the process of developing your application.
con's avatar
con committed
186 187
*/

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
188 189
/*!
    \contentspage index.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
190
    \previouspage creator-writing-program.html
191
    \page creator-code-editor.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
192
    \nextpage creator-navigation.html
193 194 195

    \title The Code Editor

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
196 197 198 199 200 201 202 203
    Qt Creator's code editor is designed to aid the developer in creating, editing,
    and navigating code. It is fully equipped with syntax highlighting, code
    completion, context sensitive help, and inline error indicators
    while you are typing.

    \section1 Code Editor Configuration

    The screenshots below show the various dialogs within
204
    which you can configure your editor.
205

206 207 208
    \table
        \row
            \i  \inlineimage qtcreator-texteditor-fonts.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
209
        \row
210 211 212
            \i  \inlineimage qtcreator-texteditor-behavior.png
        \row
            \i  \inlineimage qtcreator-texteditor-display.png
213
        \row
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
214
            \i  \inlineimage qtcreator-texteditor-completion.png
215
    \endtable
216

217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
    \section1 Code Completion

    The completion popup shows possible completions to a certain statement.
    These completions include classes, namespaces, functions, variables,
    macros and keywords. Listed below are the icons used in the completion box
    and their meaning.

    \table
        \row
            \i  \inlineimage completion/class.png
            \i  A class
        \row
            \i  \inlineimage completion/enum.png
            \i  An enum
        \row
            \i  \inlineimage completion/enumerator.png
            \i  An enumerator (value of an enum)
        \row
            \i  \inlineimage completion/func.png
            \i  A function
        \row
            \i  \inlineimage completion/func_priv.png
            \i  A private function
        \row
            \i  \inlineimage completion/func_prot.png
            \i  A protected function
        \row
            \i  \inlineimage completion/var.png
            \i  A variable
        \row
            \i  \inlineimage completion/var_priv.png
            \i  A private variable
        \row
            \i  \inlineimage completion/var_prot.png
            \i  A protected variable
        \row
            \i  \inlineimage completion/signal.png
            \i  A signal
        \row
            \i  \inlineimage completion/slot.png
            \i  A slot
        \row
            \i  \inlineimage completion/slot_priv.png
            \i  A private slot
        \row
            \i  \inlineimage completion/slot_prot.png
            \i  A protected slot
        \row
            \i  \inlineimage completion/keyword.png
            \i  A keyword
        \row
            \i  \inlineimage completion/macro.png
            \i  A macro
        \row
            \i  \inlineimage completion/namespace.png
            \i  A namespace
    \endtable
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
274 275 276 277 278 279

    \section1 External Editor

    To switch to an external editor, select \gui{Open in external editor} from the
    \gui{Edit > Advanced} menu.

280 281 282
*/


con's avatar
con committed
283 284
/*!
    \contentspage index.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
285
    \previouspage creator-version-management.html
286
    \page creator-project-pane.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
287
    \nextpage creator-cmake-support.html
con's avatar
con committed
288

289
    \title Project Settings
con's avatar
con committed
290 291 292

    \table
        \row
293 294 295
            \i  \note This page describes Qt Creator's support for \c qmake.
                For information on CMake support, see
                \l{CMake Support in Qt Creator}.
con's avatar
con committed
296 297
    \endtable

298
    To modify the project settings of your project, switch to the \gui{Projects}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
299
    mode by using the mouse or pressing \key{Ctrl+4}.
con's avatar
con committed
300

301
    \image qtcreator-projectpane.png
con's avatar
con committed
302

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
303 304
    The project pane is divided into two areas. The currently active settings are
    displayed at the top. The active build and run configuration for all projects
305 306 307
    can be changed there. The bottom area allows you to quickly get an overview
    of the build, run and editor settings as well as the dependencies between your
    projects. It also allows you to edit those settings.
con's avatar
con committed
308

309
    \section1 Build Settings
con's avatar
con committed
310

311
    Build configurations allow you to quickly switch between different build
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
312 313 314
    settings. By default, Qt Creator creates a \bold{debug} and a
    \bold{release} build configuration. Both of these configurations use the
    \l{glossary-default-qt}{default Qt version}. Action items to create, clone,
315
    or delete build configurations can be found at the top. You can have as
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
316
    many build configurations as necessary. To edit settings, click on the
317 318
    \gui{Show Details} button. Here you can specify which
    \l{glossary-project-qt}{Qt version} to use to build your project, or whether
319
    to \l{glossary-shadow-build}{shadow build} the project, for instance.
con's avatar
con committed
320

321
    \image qtcreator-ppbuildsettings.png
con's avatar
con committed
322

323
    The build system of Qt Creator is built on top of \c qmake and \c make. The
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
324
    settings for \c qmake and \c make can be changed. Qt Creator runs the
325 326 327
    make command using the correct Qt version.

    In the \bold{Build Environment} section you can specify the environment used
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
328
    for building. By default, the environment in which Qt Creator was started
con's avatar
con committed
329
    is used and modified to include the Qt version. Depending on the selected
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
330
    Qt version, Qt Creator automatically sets the necessary environment
con's avatar
con committed
331 332
    variables.

333
    \section1 Run Settings
con's avatar
con committed
334

335 336 337 338 339
    \image qtcreator-pprunsettings.png
    Qt Creator automatically creates run configurations for your project.
    These run configurations derive their executable
    from the parsed .pro files. You can also create \bold{custom executable}
    run configurations where you can freely set the executable to be run.
con's avatar
con committed
340

341 342 343
    \section1 Dependencies

    If you have multiple projects loaded in your session, you can configure
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
344 345 346 347 348 349 350
    dependencies between them. This affects the build order of your
    projects. To do this:
    \list 1
        \o Select the project for which you want to configure the dependencies.
        \o Go to the \bold{Dependencies} section.
        \o Check the checkboxes to select other projects as dependencies.
    \endlist
351
    \note This is unrelated to the dependencies inside a qmake project.
352 353
*/

354

355 356
/*!
    \contentspage index.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
357
    \previouspage creator-session.html
358
    \page creator-version-management.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
359
    \nextpage creator-project-pane.html
con's avatar
con committed
360

361
    \title Qt Version Management
con's avatar
con committed
362 363 364 365 366 367

    Qt Creator allows you to use multiple versions of Qt installed on your hard
    disk and switch between them easily.

    Qt Creator automatically detects if \c qmake is in the environment variable
    \c PATH. This \l{glossary-system-qt}{version of Qt} is referred to as
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
368 369
    \bold{Qt in PATH}. If you use only one version of Qt and it is
    already in your path and correctly set up for command line usage, you do
con's avatar
con committed
370 371 372
    not need to manually configure your Qt version.

    Otherwise, you can add your Qt version in
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
373 374
    \gui{Tools > Options... > Qt Versions} on Windows and Linux or
    in \gui{Qt Creator > Preferences... > Qt Versions} on Mac OS X.
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
375

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
376 377
    The detailed settings depend on your operating system and on the targeted
    tool chain.
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
378

379 380 381
        \table
        \row
            \i \image qtcreator-qt4-qtversions.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
382 383 384
            \i \bold{Linux and Mac OS X}

               On Linux and Mac OS X, set the \gui{path to QMake}
385
               to the \c qmake binary of the Qt installation. If a Qt is
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
386
               found in the \c PATH environment variable, it shows up
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
387 388
               automatically as \gui{Qt in PATH}.

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
389
               On both platforms, the platform's GNU Compiler Collection (GCC)
390 391 392
               is used to compile Qt. On Mac OS, the GCC compiler is part of XCode.
               On Linux, the Intel Compiler (ICC) is supported as a drop-in replacement
               for GCC.
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
393

394 395
        \row
            \i \image qtcreator-qt4-qtversions-win-mingw.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
396 397
            \i \bold{Windows and MinGW}

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
398
               If you are on the Windows platform and used MinGW
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
399 400 401
               to compile Qt, you need to tell Qt Creator
               where MinGW is installed. This is done by setting the
               \gui{MinGW directory}.
402 403
        \row
            \i \image qtcreator-qt4-qtversions-win-msvc.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
404 405
            \i \bold{Microsoft Visual C++}

406
               If your Qt version is compiled with Microsoft Visual C++'s
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
407
               compiler, Qt Creator automatically sets the correct
408
               environment variables for compilation. The \gui{MSVC}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
409
               drop-down box indicates the internal version number of the
410
               installed Microsoft Visual C++ tool chains:
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
411

412 413 414 415 416
               \list
                   \o  \bold{7.1}: Visual Studio 2003
                   \o  \bold{8.0}: Visual Studio 2005
                   \o  \bold{9.0}: Visual Studio 2008
               \endlist
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
417

418
               If you are using the \c{Windows SDK for Windows Server 2008}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
419
               instead of Visual Studio, it identifies as version 9.0.
420 421
        \row
            \i \image qtcreator-qt4-qtversions-win-symbian.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
422 423
            \i \bold{Symbian}

424
               If you are using Qt for Symbian and your S60 SDK is registered
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
425 426 427 428
               with \c devices.exe, Qt Creator detects the Qt version
               automatically.
               It is shown in the \bold{Auto-detected} section in the options
               dialog.
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
429 430 431
               You can also manually add Qt for Symbian versions. In this case
               you need to tell Qt Creator the path to the S60 SDK
               it is supposed to use with these Qt installations.
432
               Add the path to your Carbide C++ install, version 2.0
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
433 434 435 436
               or later, if you want to build for the emulator
               (\c WINSCW tool chain).
               If you want to use \c GCCE to build for your device,
               you might need to add the path to the
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
437
               \c{CSL ARM Toolchain} directory (\gui{CSL/GCCE Directory}),
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
438 439
               if the compiler is not found in the \c PATH environment
               variable.
440
        \endtable
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
441

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
442
    \note By default, projects are compiled with the
con's avatar
con committed
443
    \l{glossary-default-qt}{default Qt version}. You can override this in the
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
444
    \gui{build configuration}.
con's avatar
con committed
445 446
*/

447

con's avatar
con committed
448 449
/*!
    \contentspage index.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
450
    \previouspage creator-quick-tour.html
con's avatar
con committed
451 452 453 454 455 456 457
    \page creator-creating-project.html
    \nextpage creator-writing-program.html

    \title Creating a Project in Qt Creator

    \table
        \row
458
            \i \inlineimage qtcreator-new-project.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
459
            \i \bold{Creating a new project}
con's avatar
con committed
460

461 462
        To create a new project, select \gui{New Project} from the \gui{File} menu.
        You can create one of the following three projects:
463

464 465 466 467 468
        \list
            \o Qt4 Console Application
            \o Qt4 Gui Application
            \o C++ Library
        \endlist
con's avatar
con committed
469

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
470
        In this example, we select a \e{Qt4 Gui Application} and click on \gui{OK}.
con's avatar
con committed
471 472

        \row
473
            \i \inlineimage qtcreator-intro-and-location.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
474
            \i \bold{Setting the project name and location}
con's avatar
con committed
475

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
476
        Next, we set the project's name and its path. Click on the \gui{Choose...}
con's avatar
con committed
477 478 479 480 481
        button to browse and select your path.

        Ideally, the path should not contain spaces or special characters.

        \row
482
            \i \inlineimage qtcreator-select-modules.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
483
            \i \bold{Selecting the necessary Qt modules}
con's avatar
con committed
484

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
485
        Check the check box for each Qt module you want to include into
con's avatar
con committed
486 487
        your project.

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
488 489
        Since we started a Qt4 Gui Application, the QtCore and QtGui modules are
        set by default, but you are free to add more.
con's avatar
con committed
490 491

        \row
492
            \i \inlineimage qtcreator-class-info.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
493
            \i \bold{Specifying class information}
con's avatar
con committed
494

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
495 496 497
        Specify the name of the class you want to create. The
        \e{Header file}, \e{Source file} and \e{Form file} fields update
        automatically according to the class name you choose.
con's avatar
con committed
498

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
499 500
        Remember to select the base class for your class, either a
        QWidget, QDialog or QMainWindow, from the drop-down list.
501 502

        \row
503
            \i \inlineimage qtcreator-new-project-summary.png
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
504
            \i \bold{Creating the project}
505

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
506 507
        Finally, review the files that will be created for you. To generate your project,
        click on \gui{Done}.
508

con's avatar
con committed
509
    \endtable
510

con's avatar
con committed
511 512
*/

513

con's avatar
con committed
514 515 516 517
/*!
    \contentspage index.html
    \previouspage creator-creating-project.html
    \page creator-writing-program.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
518
    \nextpage creator-code-editor.html
con's avatar
con committed
519 520 521 522 523

    \title Writing a Simple Program with Qt Creator

    \table
        \row
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
524
        \o \note This tutorial assumes that the user has experience in writing
con's avatar
con committed
525
           basic Qt applications, designing user interfaces with Qt Designer
Kavindra Devi Palaraja's avatar
Kavindra Devi Palaraja committed
526
           and using the Qt Resource System.
con's avatar
con committed
527 528 529
    \endtable


Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
530
    In this example, we describe the steps involved in using Qt Creator
con's avatar
con committed
531 532
    to create a small Qt program, Text Finder. Inspired by the QtUiTools'
    \l{http://doc.trolltech.com/uitools-textfinder.html}{Text Finder}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
533
    example, we write a similar but simplified version of it, as shown
con's avatar
con committed
534 535 536 537 538 539
    below.

    \image qtcreator-textfinder-screenshot.png

    \section1 Setting Up Your Environment

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
540 541 542
    Once you have installed Qt Creator, it detects automatically if Qt's
    location is in your \c PATH variable. If not, please follow the
    instructions in \l{Qt Version Management}.
con's avatar
con committed
543

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
544
    \section1 Setting Up the Project
con's avatar
con committed
545 546 547

    We begin with a Qt4 Gui Application project generated by Qt Creator. The
    \l{Creating a Project in Qt Creator} document describes this process in
548
    detail. Remember to select QWidget as the Text Finder's base class. If
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
549
    your project is not yet loaded, load it by selecting \gui{File} > \gui{Open}.
con's avatar
con committed
550

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
551
    In your project, you have the following files:
con's avatar
con committed
552 553 554 555 556 557 558 559

    \list
        \o \c{textfinder.h}
        \o \c{textfinder.cpp}
        \o \c{main.cpp}
        \o \c{textfinder.ui}
        \o \c{textfinder.pro}
    \endlist
560

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
561 562
    The \c{.h} and \c{.cpp} files come with the necessary boiler plate code.
    The \c{.pro} file is also complete.
con's avatar
con committed
563

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
564
    \section1 Filling in the Missing Pieces
con's avatar
con committed
565

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
566 567
    We begin by designing the user interface and then move on to filling
    in the missing code. Finally, we add the find functionality.
con's avatar
con committed
568

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
569
    \section2 The User Interface
con's avatar
con committed
570 571

    To begin designing the user interface, double-click on the
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
572
    \c{textfinder.ui} file in the \gui{Project Explorer}. This launches the
con's avatar
con committed
573 574
    integrated Qt Designer.

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
575 576 577 578 579 580 581 582
    Design the form below with:
    \list
        \o \l{http://doc.trolltech.com/qlabel.html}{QLabel}
        \o \l{http://doc.trolltech.com/qlinedit.html}{QLineEdit} (named lineEdit)
        \o \l{http://doc.trolltech.com/qpushbutton.html}{QPushButton} (named findButton)
        \o \l{http://doc.trolltech.com/qtextedit.html}{QTextEdit} (named textEdit)
    \endlist

con's avatar
con committed
583 584
    \image qtcreator-textfinder-ui.png

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
585 586 587 588 589 590
    We recommend that you use a \l{http://doc.trolltech.com/qgridlayout.html}{QGridLayout}
    to lay out the label, the line edit and the push button.
    The grid layout and the text edit can then be added to a
    \l{http://doc.trolltech.com/qvboxlayout.html}{QVBoxLayout}.
    If you are new to designing forms with \QD, see the
    \l{http://doc.trolltech.com/designer-manual.html}{Qt Designer Manual}.
con's avatar
con committed
591 592 593

    \section2 The Header File

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
594
    The \c{textfinder.h} file already has the necessary #includes, a
con's avatar
con committed
595 596 597
    constructor, a destructor, and the \c{Ui} object. We need to add a private
    slot, \c{on_findButton_clicked()}, to carry out our find operation. We
    also need a private function, \c{loadTextFile()}, to read and display the
598 599 600
    contents of our input text file in the
    \l{http://doc.trolltech.com/qtextedit.html}{QTextEdit}. This is done with
    the following code:
con's avatar
con committed
601

602
    \snippet examples/textfinder/textfinder.h 0
603

604
    \note The \c{Ui::TextFinder} object is already provided.
con's avatar
con committed
605 606 607 608

    \section2 The Source File

    Now that our header file is complete we move on to our source file,
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
609 610
    \c{textfinder.cpp}. We begin by filling in the functionality to load a
    text file. This is described in the code snippet below:
con's avatar
con committed
611

612
    \snippet examples/textfinder/textfinder.cpp 0
con's avatar
con committed
613

614 615 616 617
    Basically, we load a text file using
    \l{http://doc.trolltech.com/qfile.html}{QFile}, read it with
    \l{http://doc.trolltech.com/qtextstream.html}{QTextStream}, and
    then display it on \c{textEdit} with
hjk's avatar
hjk committed
618 619
    \l{http://doc.trolltech.com/qtextedit.html#plainText-prop}{setPlainText()}
    which requires adding the following additional #includes to textfinder.cpp:
620 621

    \snippet examples/textfinder/textfinder.cpp 1
con's avatar
con committed
622 623

    For the \c{on_findButton_clicked()} slot, we extract the search string and
624
    use the \l{http://doc.trolltech.com/qtextedit.html#find}{find()} function
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
625 626
    to look for the search string within the text file. This is described in
    the code snippet below:
con's avatar
con committed
627

628
    \snippet examples/textfinder/textfinder.cpp 2
con's avatar
con committed
629

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
630
    Once we have both of these functions complete, we call \c{loadTextFile()} in
con's avatar
con committed
631 632
    our constructor.

633
    \snippet examples/textfinder/textfinder.cpp 3
con's avatar
con committed
634

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
635 636
    The \c{on_findButton_clicked()} slot is called automatically in
    the uic generated \c{ui_textfinder.h} file by this line of code:
con's avatar
con committed
637 638

    \code
639
    QMetaObject::connectSlotsByName(TextFinder);
con's avatar
con committed
640 641 642 643
    \endcode

    \section2 The Resource File

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
644 645 646 647 648 649 650 651 652
    We require a resource file (\c{.qrc}) within which we embed the input
    text file. This can be any \c{.txt} file with a paragraph of text.

    To add a resource file:
    \list 1
        \o Right-click on \gui{Resource Files} in the \gui{Project Explorer}.
        \o Select \gui{Add New File...}.
    \endlist
    The wizard dialog below is displayed.
con's avatar
con committed
653 654 655

    \image qtcreator-add-resource-wizard.png

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
656 657 658 659 660
    \list 3
        \o Enter "textfinder" in the \gui{Name} field. Use the given \gui{Path}.
        \o Click on \gui{Continue}.
    \endlist
    This page is displayed:
661 662 663

    \image qtcreator-add-resource-wizard2.png

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
664 665 666 667 668 669
    \list 5
        \o Choose to which project you want to add the new file. Select "TextFinder"
        as the \gui{Project}.
        \o Make sure that \gui{Add to Project} is checked.
        \o Click on \gui{Done}.
    \endlist
con's avatar
con committed
670

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
671
    Your resource file is now displayed in the resource editor.
con's avatar
con committed
672

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
673 674 675 676 677 678
    \list 8
        \o Select \gui{Add} > \gui{Add Prefix} from the drop-down list. The prefix we
        require is a slash (\c{/}).
        \o Select \gui{Add} > \gui{Add File} from the drop-down list.
        \o Locate the text file you are going to use. We use \c{input.txt}.
    \endlist
con's avatar
con committed
679

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
680
    Once the resource file has been successfully added, the following is displayed:
con's avatar
con committed
681

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
682
    \image qtcreator-add-resource.png
con's avatar
con committed
683

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
684
    \section1 Compiling and Running your Program
con's avatar
con committed
685

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
686 687
    Now that you have all the necessary files, click the \inlineimage qtcreator-run.png
    button to compile your program.
688

con's avatar
con committed
689 690
*/

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
691

con's avatar
con committed
692 693
/*!
    \contentspage index.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
694
    \previouspage creator-debugging.html
695
    \page creator-version-control.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
696
    \nextpage creator-tips.html
697 698 699 700 701 702 703 704

    \title Qt Creator and Version Control Systems

    \table
        \caption    Version control systems supported by Qt Creator
        \row
            \i  \bold{git}
            \i  \l{http://git-scm.com/}
705
            \i
706 707 708
        \row
            \i  \bold{Subversion}
            \i  \l{http://subversion.tigris.org/}
709
            \i
710 711 712
        \row
            \i  \bold{Perforce}
            \i  \l{http://www.perforce.com}
713
            \i  Server version 2006.1 and later
714 715 716 717
        \row
            \i  \bold{CVS}
            \i  \l{http://www.cvshome.org}
            \i
718 719 720
    \endtable


Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
721
    \section1 Setting Up Version Control Systems
722 723 724

    Qt Creator uses the version control system's command line clients to
    access your repositories. To set it up, you must ensure that these command
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762
    line clients can be located via the \c{PATH} environment variable.
    To specify the path to the command line client's executable, go to the settings
    pages in \gui{Tools} > \gui{Options...}.


    \section1 Setting Up Common Options

    The \gui{Version Control > Common} settings page features common settings for
    version control systems, such as commit message line wrapping and checking
    options.

    \gui{Submit message checking script} is a script or program that can be
    used to perform checks on the submit message before submitting. The submit
    message is passed in as the script's first parameter. If there is an error,
    the script should output a message on standard error and return a non-zero
    exit code.

    \gui{User/alias configuration file} takes a file in mailmap format that
    lists user names and aliases. For example:

    \code
    Jon Doe <Jon.Doe@company.com>
    Hans Mustermann <Hans.Mustermann@company.com> hm <info@company.com>
    \endcode

    Notice that the second line specifies the alias \e{hm} and the
    corresponding email address for \e{Hans Mustermann}. If the user/alias
    configuration file is present, the submit editor displays a context
    menu with \gui{Insert name...} that pops up a dialog letting the user
    select a name.

    \gui{User field configuration file} is a simple text file consisting of
    lines specifying submit message fields that take user names, for example:

    \code
    Reviewed-by:
    Signed-off-by:
    \endcode
763

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
764 765 766 767
    These fields appear below the submit message. They provide completion
    for the aliases/public user names specified in the
    \e{User/alias configuration file} as well as a button that opens the
    aforementioned user name dialog.
768 769


Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
770
    \section1 Using Version Control Systems
771

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
772 773
    The version control sub-menus are in \gui{Tools} menu. The version control system
    managing the current project is displayed here.
774 775

    Each version control system adds a pane to the \gui{Application Output}
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
776
    panes within which itlogs the commands it executes, prepended by a
777 778 779 780 781 782 783
    timestamp and the relevant output.

    \image qtcreator-vcs-pane.png


    \section2 Addings Files

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
784 785 786
    When you create a new file or a new project, the wizard displays a page
    asking whether the files should be added to a version control system.
    This happens when the parent directory or the project is already
787
    under version control and the system supports the concept of adding files,
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
788 789
    e.g., \bold{Perforce} and \bold{Subversion}. Alternatively, you can
    add files later by using the version control tool menus.
790 791 792 793 794 795 796 797

    With \bold{git}, there is no concept of adding files. Instead, all modified
    files must be \e{staged} for a commit.


    \section2 Viewing Diff Output

    All version control systems provide menu options to \e{diff} the current
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
798 799 800 801
    file or project: to compare it with the latest version stored in the
    repository and to display the differences. In Qt Creator, a diff is
    displayed in a read-only editor. If the file is accessible, you can
    double-click on a selected diff chunk and Qt Creator opens an editor
802 803 804 805 806
    displaying the file, scrolled to the line in question.

    \image qtcreator-vcs-diff.png


807 808 809
    \section2 Annotating Files

    Annotation views are obtained by selecting \gui{Annotate} or \gui{Blame}.
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
810
    This displays the lines of the file prepended by the change identifier
811 812 813 814 815 816 817
    they originate from. Clicking on the change identifier shows a detailed
    description of the file.


    \section2 Committing Changes

    Once you have finished making changes, you can submit them to the version
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
818 819
    control system by choosing \gui{Commit} or \gui{Submit}. Qt Creator
    displays a commit page containing a text editor, where you can enter your
820
    commit message, and a checkable list of modified files to be included.
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
821 822
    When you are done, click on \gui{Commit} to start committing. In addition,
    there is a \gui{Diff Selected Files} button that brings up a diff view of the
823 824 825 826 827 828 829
    files selected in the file list. Since the commit page is just another
    editor, you can go back to it by closing the diff view. Alternatively, you
    can view it from the editor combo box showing the \gui{Opened files}.

    \image qtcreator-vcs-commit.png


Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
830 831 832 833 834 835 836 837 838 839 840 841 842
    \section2 Viewing Versioning History and Change Details

    The versioning history of a file is displayed by selecting
    \gui{Log} (for \bold{git}) or \gui{Filelog} (for \bold{Perforce} and
    \bold{Subversion}). Typically, the log output contains the
    date, the commit message, and a change or revision identifier.
    Click on the identifier to display a description of the change including the diff.

    \image qtcreator-vcs-log.png
    \image qtcreator-vcs-describe.png


    \section2 Using git-specific Menu Entries
843 844 845 846 847 848 849 850

    The git sub-menu contains additional entries:

    \table
        \row
            \i  \gui{Stash}
            \i  Stash local changes prior to executing a \bold{pull}.
        \row
851 852
            \i  \gui{Pull}
            \i  Pull changes from the remote repository. If there are locally
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
853
                modified files, you are prompted to stash those changes.
854 855 856 857
        \row
            \i  \gui{Branches...}
            \i  Displays the branch dialog showing the local branches at the
                top and remote branches at the bottom. To switch to the local
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
858 859 860
                branch, double-click on it. Double-clicking on a remote
                branch first creates a local branch with the same name that
                tracks the remote branch, and then switches to it.
861 862

                \image qtcreator-vcs-gitbranch.png
863
    \endtable
864

865

con's avatar
con committed
866 867 868
*/


869 870
/*!
    \contentspage index.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
871
    \previouspage creator-code-editor.html
872
    \page creator-navigation.html
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
873
    \nextpage creator-session.html
874

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
875
    \title Navigating Around Your Code with Locator
876 877

    With Qt Creator, navigating to different locations in your project or on
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
878 879
    your disk, e.g., files, classes, methods, etc., is simple using
    \gui Locator -- a smart line edit at the bottom left in Qt Creator
880 881 882 883
    window.

    \image qtcreator-locator.png

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
884 885 886 887 888 889 890 891
    For example, to open your project's \c{main.cpp} file:
    \list 1
        \o Click on \gui Locator or press \key{Ctrl+K} (Mac OS X: \key{Cmd+K}).
        \o Type in the file name.
        \o Press \key Return.
    \endlist
    The file opens in the editor.

892
    You can also type part of a file name and use the wildcard characters
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
893
    \c{*} and \c{?} to match \e{any} number of \e{any} characters. A list
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
894
    of files matching your criteria is displayed.
895

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
896 897
    \gui Locator allows you to navigate files both on disk and in other
    "locations", which are organized with \bold{Filters}. There are
898 899 900
    filters for:

    \list
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
901 902 903 904 905 906 907 908 909
        \o  Files anywhere on your hard disk (browsing through the file system)
        \o  Files from a subdirectory structure defined by you
        \o  Files mentioned in your \c{.pro} files, such as source, header
            resource, and \c{.ui} files
        \o  Any open document
        \o  Class and method definitions in your project or anywhere referenced
            from your project
        \o  Help topics, including Qt's documentation
        \o  Specific line in the document displayed on your editor
910 911 912 913 914 915
    \endlist


    Some of these filters require you to activate them by typing an assigned
    \e prefix. This prefix is usually a single character followed by
    \key{Space}. For example, to jump to the definition of the class
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
916 917 918
    \l{http://doc.trolltech.com/qdatastream.html}{QDataStream}, activate
    \gui Locator. Then type a colon (\key{:}) followed by a \key{Space} and
    the class name.
919 920 921 922 923 924 925 926 927 928


    Below is a full list of \l{http://doc.trolltech.com/qdatastream.html}
    {QDataStream} related output:

    \image qtcreator-navigate-popup.png


    Filters can be added to provide quick navigation around files in a
    subdirectory structure defined by you. This way, you can acccess files you
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951
    need that are not directly mentioned in your project.
    \list 1
        \o Click the button \image qtcreator-locator-magnify.png
        \o Select \gui{Configure...} from the menu displayed:
        \image qtcreator-locator-customize.png
        \o To create a new filter, select \gui Add from the \gui Configure...
        dialog (\gui Options on Mac Os X).
        \o In the \gui{Filter Configuration} dialog below:
        \list
            \o Give your filter a name.
            \o Select your preferred directories.
            \o Set file patterns with a comma separated list.
            \o Specify a prefix string.
        \endlist
        \image qtcreator-navigate-customfilter.png
        \o Close the dialog.
    \endlist
    \gui Locator searches the directories you selected for files matching
    your file patterns. Information is cached. To update the cached information:
    \list 1
        \o Click the button \image qtcreator-locator-magnify.png again.
        \o Select \gui Refresh.
    \endlist
952

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
953
    The following table lists available filters:
954 955 956 957 958 959 960

    \table
        \header
            \o  Function
            \o  Key Combination
            \o  Screenshot
        \row