diff options
Diffstat (limited to 'doc/qtcreator.qdoc')
| -rw-r--r-- | doc/qtcreator.qdoc | 1153 |
1 files changed, 1153 insertions, 0 deletions
diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc new file mode 100644 index 00000000000..d589d533bac --- /dev/null +++ b/doc/qtcreator.qdoc @@ -0,0 +1,1153 @@ +/*! + \contentspage{index.html}{Qt Creator} + \page index.html + \nextpage qtcreator-quick-tour.html + + \title Qt Creator Manual + + \section1 Version 0.9 - Technical Preview + + 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. + + \note Qt Creator is currently released as a Technical Preview. It is + possible to edit source code, compile, run and debug applications; other + features are still under development. Please send bug reports and + suggestions to [email protected]. To subscribe, send a + message with the word \e subscribe to [email protected]. + For more information on Qt mailing lists, visit http://lists.trolltech.com + + \table + \row + \o \inlineimage qtcreator.png + \o Qt Creator includes a wide range of useful features. Among them are: + \list 1 + \o \bold{Qt4 Project Generating Wizard}: This wizard allows the user + to generate a project for a console application, a GUI application, + or a C++ library. + \o \bold{Qt Help Integration}: Qt's entire documentation can be + accessed easily by clicking on the \gui{Help} button. + \o \bold{Qt Designer Integration}: User interface forms can be designed + within Qt Creator. Simply double-click on a \c{.ui} file within the + \gui{Project Explorer} to launch the integration. + \o \bold{Navigation tools}: Powerful navigation tools let the user + navigate around files and classes with minimal keystrokes. + \o \bold{Support for qmake's .pro file format}: The project's \c{.pro} + file is used as a project description file. + \o \bold{Debugging Interface to GDB}: Applications can be debugged + within Qt Creator using a graphical frontend to the GNU symbolic + debugger. + \endlist + \endtable + + To learn more about the Qt Creator, click on one of the links below: + + \list + \o \l{A Quick Tour Around Qt Creator} + \o \l{Creating a Project in Qt Creator} + \o \l{Build Settings} + \o \l{Writing a Simple Program with Qt Creator} + \o \l{Quick Navigation} + \o \l{Debugging with Qt Creator} + \o \l{Tips and Tricks} + \o \l{Glossary} + \o \l{Known Issues for Version 0.9 (Technical Preview)} + \endlist + +*/ + +/*! + \contentspage index.html + \page creator-quick-tour.html + \nextpage creator-build-settings.html + + \title A Quick Tour Around Qt Creator + + The labeled screenshot below shows some of the components of Qt Creator, + in \gui Edit mode. + + \image qtcreator-breakdown.png + + \seection1 The Mode Selectors + + When working in Qt Creator, you can be in one of five modes: \bold Project, + \bold Edit, \bold Debug, \bold Help, and \bold Output. + + Mode selectors allow you to quickly switch between tasks: Editing, + browsing the Qt manual, setting up the build environment, etc. You can + activate a mode by either clicking on its mode selector, or using the + \l{keyboard-shortcuts}{corresponding shortcut}. Certain actions also + trigger a mode change, e.g., \gui{Debug}/\gui{Start Debugging} will switch + to the \gui Debug mode. + + + \list + + \o \gui{Welcome Mode} - Displays a welcome screen allowing you to quickly + load recent sessions or individual projects. This is the first mode + displayed if Qt Creator is run without command line switches. + + \o \gui{Edit Mode} - You can edit both project and source files here. An + optional sidebar on the left provides different views to navigate between + files. + + \o \gui{Debug Mode} - Provides various ways to inspect the state of the + program while debugging. See \l{qtcreator-debugging}{Debugging With Qt + Creator} for a hands-on description of the mode. + + \o \gui{Build & Run Mode} - Lets you configure how projects can be built + and executed. Under the list of projects, there are tabs to configure the + build and run settings. + + \o \gui{Help Mode} - Shows any documentation registered by Qt Assistant, + such as the Qt library and Qt Creator documentation. + + \o \gui{Output Mode} - Lets you examine various logs in detail, for example + the task list, the compiler and application output. Some of these logs can + also be viewed in the output panes. + + \endlist + + + \section1 The Output Panes + + The task pane in Qt Creator can display one out of four different panes: + Task List, Search Results, Application Output, and Compile Output. These + panes are available in all modes. + + \section2 Task List + + The Task List provides a list of important tasks such as error messages + that need to be fixed. It filters out irrelevant output from the compiler + and collects them in the form of tasks. + + \image qtcreator-task-list.png + + \section2 Search Results + + The 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 "/TextFinder" folder. + + \image qtcreator-search-pane.png + + \section2 Application Output + + This pane displays the status of the program when it is executed, as + well as debug output, for example, output from qDebug(). + + \image qtcreator-application-output.png + + \section2 Compile Output + + The Compile Output provides all the output from the compiler. In other + words, it is a more verbose version of the Task List. + + \image qtcreator-compile-pane.png + + \section1 Qt Help Integration + + Qt Creator comes fully integrated with all of Qt's documentation and + examples via the Qt Help plugin. To view the documentation, you can switch + to the \gui{Help} mode. To obtain context sensitive help, move your text + cursor to a Qt class or function and press \key{F1}. The documentation + will be displayed within a panel on the right, as shown in the screenshot + below. + + External Documentation provided by the user can be used to augment or + replace the documentation shipped with Qt Creator and Qt. + + \image qtcreator-context-sensitive-help.png + + + \section1 Qt Designer Integration + + Qt Creator is fully integrated with Qt Designer to help you design user + interface forms just like you would with the standalone version. The Qt + Designer integration also includes project management and code completion. + + \image qtcreator-formedit.png + + + \section1 Keyboard Navigation + + Even though Qt Creator can be used with a mouse, it also caters to the + needs of developers who are more comfortable with the keyboard. A wide + range of \l{keyboard-shortcuts}{keyboard} and \l{Quick Navigation} + {navigation} shortcuts are available to help speed up the process of + developing your application. +*/ + +/*! + \contentspage index.html + \previouspage creator-quick-tour.html + \page creator-build-settings.html + \nextpage creator-creating-project.html + + \title Build Settings + + \table + \row + \i \bold{Warning:} Qt Creator currently supports qmake only. + Makefile and CMake support is not yet available. + \endtable + + To modify the build settings of your project, switch to the + \gui{Build & Run} mode using the mouse or by pressing \key{Ctrl+4}. + + \image qtcreator-buildsettings.png + + Action items to create, clone, or delete build configurations can be found + on the right of the dialog. You can have as many build configurations + as you need. By default Qt Creator creates a \bold{debug} and + \bold{release} build configuration. Both these configurations use the + \l{glossary-default-qt}{Default Qt Version}. + + In the tree on the left, a list of build configurations and their settings + are displayed. The screenshot below shows the \bold{debug} and + \bold{release} configurations and their corresponding settings: + \bold{Build Environment} and \bold{Build Steps}. + + \image qtcreator-buildsettingstab.png + + When you select a build configuration in the tree, a configuration page for + general build settings will be displayed. Here you can specify which + \l{glossary-project-qt}{Qt version} to use to build your project, whether + to \l{glossary-shadow-build}{shadow build} the project, and if a special + debugging helper is linked into the project or not. + + The debugging helper enables the gdb integration to show the contents of + Qt data types. Enabling this option means that an additional file will be + compiled and linked to your project. + + \image qtcreator-buildenvironment.png + + In the \bold{Build Environment} page you can specify the environment used + for building. By default the environment in which Qt Creator was started + is used and modified to include the Qt version. Depending on the selected + Qt version, Qt Creator will automatically add the necessary environment + variables. + + \image qtcreator-buildsteps.png + + The build system of Qt Creator is built on top of \c qmake and \c make. The + settings for \c qmake and \c make can be changed in the + \bold{Build Settings} page. Qt Creator will run the make command using the + correct Qt version. + + \note The default qmake arguments \c{-after SOURCES*=gdbmacros.cpp + -after QT*=network} are due to the debugging helper described above. If the + debugging helper seems to break your build or your application, you can + turn it off. You will still be able to debug applications, but the contents + of Qt data types will not be displayed properly. + + + \section1 Qt Version Management + + 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 + \bold{System Qt}. If you intend to use only one version of Qt - it is + already in your path and correctly set up for command line usage - you do + not need to manually configure your Qt version. + + Otherwise, you can add your Qt version in + \gui{Tools -> Options... -> Qt Versions}. If you are on the Windows + platform and use MinGW to compile Qt, you need to tell Qt Creator where + MinGW is installed. This is done by setting the \gui{MinGW Directory} + under \gui{Tools -> Options... -> Qt4 -> Qt Versions -> MinGw Directory}. + If your Qt version is compiled with Microsoft Visual C++'s compiler, Qt + Creator will automatically set the correct environment variables for + compilation. + + \note By default projects are compiled with the + \l{glossary-default-qt}{default Qt version}. You can override this in the + \gui{Build Configuration}. +*/ + +/*! + \contentspage index.html + \previouspage creator-quick-tour.html + \page creator-creating-project.html + \nextpage creator-writing-program.html + + \title Creating a Project in Qt Creator + + \table + \row + \i \inlineimage qtcreator-new-project.png + \i \bold{Creating a New Project} + + To create a new project, select \gui{New Project} from the \gui{File} menu. + You can create one of the following three projects: + + \list + \o Qt4 Console Application + \o Qt4 Gui Application + \o C++ Library + \endlist + + In this example, we select a \e{Qt4 Gui Application} and click \gui{OK}. + + \row + \i \inlineimage qtcreator-intro-and-location.png + \i \bold{Setting The Project Name and Location} + + Next, we set the project's name and its path. Click on the \gui{...} + button to browse and select your path. + + Ideally, the path should not contain spaces or special characters. + + \row + \i \inlineimage qtcreator-select-modules.png + \i \bold{Selecting The Necessary Qt Modules} + + Click on the check boxes of each Qt Module you would like to include in + your project. + + Since we started a Qt4 Gui Application, the Core and Gui modules are + set, but you are free to add more. + + \row + \i \inlineimage qtcreator-class-info.png + \i \bold{Specifying Class Information} + + Lastly, specify the name of the class you would like to create. The + \e{Header file}, \e{Source file} and \e{Form file} fields will update + themselves according to your choice of class name. + + You also have to select the base class for your class, either a + QWidget, QDialog or QMainWindow, from the drop down box. Click + \gui{Done} and your project will be generated. + + \endtable +*/ + +/*! + \contentspage index.html + \previouspage creator-creating-project.html + \page creator-writing-program.html + \nextpage creator-navigation.html + + \title Writing a Simple Program with Qt Creator + + \table + \row + \o \note This tutorial assumes that the user has experience writing + basic Qt applications, designing user interfaces with Qt Designer + and and using the Qt Resource System. + \endtable + + + In this example, we will describe the steps involve in using Qt Creator + to create a small Qt program, Text Finder. Inspired by the QtUiTools' + \l{http://doc.trolltech.com/uitools-textfinder.html}{Text Finder} + example, we will write a similar but simplified version of it, as shown + below. + + \image qtcreator-textfinder-screenshot.png + + \section1 Setting Up Your Environment + + Once you have installed Qt Creator, it will automatically detect if Qt's + location is in your \c PATH variable. If Qt's location is not in your + \c PATH, you can set it in one of the following ways, depending on your + platform: + + \list + \o On Windows and Linux: in the \gui{Tools} menu, under \gui{Options}. + \o On Mac OS X: in \gui{Preferences}, under \gui{Qt4}. + \endlist + + \note If Qt was compiled with Visual Studio, all environment variables set + in Visual Studio will be added to Qt Creator as well. + + \section1 Setting Up The Project + + 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 + detail. Remember to select QWidget as the Text Finder's base class. + + Once your project is generated, you will have the following files: + + \list + \o \c{textfinder.h} + \o \c{textfinder.cpp} + \o \c{main.cpp} + \o \c{textfinder.ui} + \o \c{textfinder.pro} + \endlist + + The \c{.h} and \c{.cpp} files come with the necessary boiler plate code; + the \c{.pro} file is also complete. + + \section1 Filling In The Missing Pieces + + We will begin by designing the user interface and then move on to filling + in the missing code. Finally, we will add the find functionality. + + \section2 Designing the User Interface + + To begin designing the user interface, double-click on the + \c{textfinder.ui} file in your \gui{Project Explorer}. This will launch the + integrated Qt Designer. + + \image qtcreator-textfinder-ui.png + + Design the form above using a QLabel, QLineEdit, QPushButton and a + QTextEdit. We recommend that you use a QGridLayout to lay out the QLabel, + QLineEdit and QPushButton. The QTextEdit can then be added to a + QVBoxLayout, along with the QGridLayout. If you are new to designing forms + with \QD, you can take a look at the + \l{http://doc.trolltech.com/designer-manual.html}{Designer Manual}. + + \section2 The Header File + + The \c{textfinder.h} file already has the necessary includes, a + 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 + contents of our input text file in the QTextEdit. This is done with the + following code: + + \code + private slots: + void on_findButton_clicked(); + + private: + Ui::Form ui; + void loadTextFile(); + \endcode + + \note The \c{Ui::Form} object is already provided. + + \section2 The Source File + + Now that our header file is complete we move on to our source file, + \c{textfinder.cpp}. We begin by filling in the functionality to load a + text file. The code snippet below describes this: + + \code + void TextFinder::loadTextFile() + { + QFile inputFile(":/input.txt"); + inputFile.open(QIODevice::ReadOnly); + + QTextStream in(&inputFile); + QString line = in.readAll(); + inputFile.close(); + + ui.textEdit->setPlainText(line); + QTextCursor cursor = ui.textEdit->textCursor(); + } + \endcode + + Basically, we load a text file using QFile, read it with QTextStream, and + then display it on \c{textEdit} with \l{QTextEdit::}{setPlainText()}. + + For the \c{on_findButton_clicked()} slot, we extract the search string and + use the \l{QTextEdit::}{find()} function to look for the search string + within the text file. The code snippet below further describes it: + + \code + void TextFinder::on_findButton_clicked() + { + QString searchString = ui.lineEdit->text(); + ui.textEdit->find(searchString, QTextDocument::FindWholeWords); + } + \endcode + + Once we have both these functions complete, we call \c{loadTextFile()} in + our constructor. + + \code + TextFinder::TextFinder(QWidget *parent, Qt::WFlags flags) + : QWidget(parent, flags) + { + ui.setupUi(this); + loadTextFile(); + } + \endcode + + The \c{on_findButton_clicked()} slot will be called automatically due to + this line of code: + + \code + QMetaObject::connectSlotsByName(Form); + \endcode + + in the uic generated \c{ui_textfinder.h} file. + + \section2 The Resource File + + We require a resource file (\c{.qrc}) within which we will embed the input + text file. This can be any \c{.txt} file with a paragraph of text. To add + a resource file, right click on \gui{Resource Files} in the + \gui{Project Explorer} and select \gui{Add New File...}. You will see the + wizard dialog displayed below. + + \image qtcreator-add-resource-wizard.png + + Enter "textfinder" in the \gui{Name} field and use the given \gui{Path}. + Then, click \gui{Done}. + + Your resource file will now be displayed with the Resource Editor. Click + on the \gui{Add} drop down box and select \gui{Add Prefix}. The prefix we + require is just a slash (\c{/}). Click \gui{Add} again but this time, + select \gui{Add File}. Locate the text file you are going to use, we use + \c{input.txt}. + + \image qtcreator-add-resource.png + + The screenshot above shows what you can expect to see once you have added + the resource file successfully. + + \section1 Compiling and Running Your Program + + Now that you have all the necessary files, you can compile your program by + clicking on the + \inlineimage qtcreator-run.png + button. + +*/ + +/*! + \contentspage index.html + \previouspage creator-writing-program.html + \page creator-navigation.html + \nextpage creator-debugging.html + + \title Quick Navigation + + With Qt Creator, navigating to different locations in your project or on + your disk, such as files, classes and methods, is trivial using the input + field at the bottom left of the application window. + + ### SCREENSHOT + + To open for example the file \c{main.cpp} of your project, click into the + input field (or use \key{Ctrl+K} to get there), type the file name, and + finally press the \key{Return} key. The file will open in the editor. + You can also type only a part of a file name, and use the wildcard + characters \c{*} and \c{?} which match \c{any number of any characters} and + \c{any single character}, respectively - you will get a list of all matching + files to choose from. + + As mentioned above, files are not the only type of locations you can + jump to. The different types of locations are organized in what we + call \c{filters}. There are filters for jumping to + \list + \o files mentioned in your \c{.pro} files, such as source and header, + resource and \c{.ui} files, + \o a specific line in your current text document, + \o class and method definitions in your project or anywhere referenced + from your project, + \o help topics, including the Qt API reference documentation, + \o files anywhere on your hard disk (by browsing through the file system), + \o any open document, + \o files from a subdirectory structure you define. + \endlist + Some of these filters are not used by default if you just start typing in the + input field, but require you to type a "prefix" in front, that is + assigned to that filter. The prefix is usually a single character, + followed by a space. As an example, to jump to the definition of the class + \c{QDataStream} type \key{Ctrl+K}, \key{:}, \key{Space}, and the class name. + You find a full list of filters and their prefixes below. + + \image qtcreator-navigate-popup.png + + You can add filters that provide quick navigation to files in a + subdirectory structure that you define. This way you have quick access to + files that are not directly mentioned in your project, but still relate to it. + Click on the little magnifier glass in the input field and choose + \gui{Configure...} from the menu that appears. This opens the preferences + dialog for navigation filters. Click the \gui{Add} button to create a new + filter. Give it a name, choose directories, set (a comma separated list of) + file patterns, and give it a prefix string. After closing the preferences + dialog the directories you specified are searched for files that match the + file patterns, and the information is cached. From now on you can jump to + these files by just typing part of the file name into the navigation input + field. You can force an update of the cached information about the files via + the \gui{Refresh} menu item in the magnifier menu. + + \image qtcreator-navigate-customfilter.png + + The following table gives an overview on the currently available filters: + + \table + \header + \o Function + \o Key Combination + \row + \o Go to a Line in the Current Document + \o Ctrl + K, l, Space, and the line number + \row + \o Go to a Function Definitions + \o Ctrl + K, :, Space, and the function name + \row + \o Go to a Help Topic + \o Ctrl + K, ?, Space, and the topic + \row + \o Go to an Already Opened Document + \o Ctrl + K, o, Space, and the document name. + \row + \o Go to a File in the File System (browsing the file system) + \o Ctrl + K, f, Space, and the file name. + \row + \o Go to a File in any Loaded Project + \o Ctrl + K, a, Space, and the function name. + \row + \o Go to a File in the Current Project + \o Ctrl + K, p, Space, and the function name. + \endtable +*/ + + +/*! + \contentspage index.html + \previouspage creator-navigation.html + \page creator-debugging.html + \nextpage creator-tips.html + + \title Debugging With Qt Creator + + \table + \row + \i \note Qt Creator's debugger integration currently does not + support debugging applications created with the Microsoft Visual + Studio Compiler. + \endtable + + Qt Creator does not have its own debugger. Instead, it provides a graphical + frontend to the GNU Symbolic Debugger (gdb). This frontend allows you to + step through a program line-by-line or instruction-by-instruction, + interrupt running programs, set breakpoints, examine the contents of the + call stack, local and global variables, etc. + + + Within Qt Creator, the raw information provided by gdb is displayed in a + clear and concise manner, simplifying the process of debugging. + + In addition to generic IDE functionality: stack view, views for locals and + watchers, registers, etc, Qt Creator comes with additional features to make + debugging Qt-based applications easy. The debugger frontend knows about the + internal layout of several Qt classes such as QString, the QTL containers, + and most importantly QObject (and classes derived from it). Therefore, it + is able to present Qt's data clearly. + + + \section1 Interacting with the Debugger + + In \gui Debug mode, several dock widgets are used to interact with the + program you are debugging. The frequently used dock widgets are visible by + default; the rarely used ones are hidden. To change the default settings, + select \gui Debug and then select \gui View. + + ####SCREENSHOT + + Here, you can lock or unlock the location of your views as well as display + or hide them. Among the views you can display are \gui Breakpoints, + \gui Disassembler, \gui Modules, \gui Registers, \gui Gdb, \gui Stack, and + \gui Thread. The position of your dock widgets will be saved for future + sessions. + + + \section2 Breakpoints + + Breakpoints are shown in the \gui{Breakpoints} view which is enabled by + by default. This view is also accessible when the debugger and the program + being debugged is not running. + + A breakpoint represents a position or sets of positions in the code that, + when executed, stops the program being debugged and passing the control to + the user. The user is then free to examine the state of the interrupted + program, or continue execution line-by-line or continuously. + + Typically, breakpoints are associated with a source code file and line, or + the start of a function -- both allowed in Qt Creator. + + Also, the interruption of a program by a breakpoint can be restricted with + certain conditions. + + You can set a breakpoint: + + \list + \o At a particular line you want the program to stop -- click on the + left margin or press \key F9 (\key F8 for Mac Os X). + \o At the name of a function that you want the program to stop -- enter + the function's name in \gui{Set Breakpoint at Function...} under the + \gui Debug menu. + \endlist + + You can remove a breakpoint: + + \list + \o By clicking on the breakpoint marker in the text editor. + \o By selecting the breakpoint in the breakpoint view and pressing + \key{Delete}. + \o By selecting \gui{Delete Breakpoint} from the breakpoint's context + menu in the \gui Breakpoints view. + \endlist + + Breakpoints can be set and deleted before the program has actually started + running or while it is running under the debugger's control. Also, + breakpoints are saved together with a session. + + + \section2 Running + + To start a program under the debugger's control, select the \gui{Debug} + menu and \gui{Start Debugging}, or simply press \key{F5}. Qt Creator then + checks whether the compiled program is up-to-date, rebuilding it if + necessary. The debugger then takes over and starts the program. + + \note Starting a program in the debugger will take considerable amount of + time, typically in the range of several seconds to minutes if complex + features (like QtWebKit) are used. + + Once the program starts running, it behaves as usual; performance-wise as + well. The user can interrupt a running program by selecting + \gui {Interrupt} from the \gui{Debug} menu. The program is automatically + interrupted as soon as a breakpoint is hit. + + \omit (and, if set, its associated conditions are met). \endomit + + Once the program stops, Qt Creator: + + \list + \o Retrieves data representing the call stack at the program's current + position. + \o Retrieves the contents of local variables. + \o Examines \gui Watchers. + \o Updates the \gui Registers, \gui Modules, and \gui Disassembler + views. + \endlist + + + You can use the debugger views to examine the data in more detail. + + To finish debugging, Press \key{Shift+F5}. A line of code can be executed + as a whole with \key F10; to execute a function or a sub-function, use + \key F11. Alternatively, you can continue running the program with \key F5. + + ###REWORD + There is also the possibility to continue execution until the current + function finishes, or, for advanced use, to jump to an arbitrary + possition in the current function. + + + \section2 Stack + + When the program being debugged is stopped, Qt Creator displays the nested + function calls leading to the current position as a \e call stack trace. + This stack trace is built up from \e call stack frames, each representing a + particular function. For each function, Qt Creator will try to retrieve the + file name and line number of the corresponding source files. This data is + shown in the \gui Stack view. + + Since the call stack leading to the current position may originate or go + through code for which no debug information is available, not all stack + frames will have corresponding source locations. These frames will be + greyed out in the \gui Stack view. + + ###SCREENSHOT + + + If you click on a frame with a known source location, the text editor will + jump to the corresponding location and update the \gui{Locals and Watchers} + view, making it seem like the program stopped before entering the function. + + + \section2 Threads + + + The \gui Thread view displays the state of the program being debugged one + thread at a time. If a multi-threaded program is stopped, the \gui Thread + view or the combobox named \gui Thread in the debugger's status bar can + be used to switch from one thread to another. The \gui Stack view will + adjust itself accordingly. + + + \section2 Locals and Watchers + + Whenever a program stops under the control of the debugger, it retrieves + information about the topmost stack frame and displays it in the + \gui{Locals and Watchers} view. This typically includes information about + parameters of the function in that frame as well as the local variables. + + Compound variables of struct or class type will be displayed as + "expandable" in the view. C lick on the "+" to expand the entry and show + all members. Together with the display of value and type, the user can + examine and traverse the low-level layout of an object's data. + + + \table + \row + \i \bold{Note:} + \i Gdb, and therefore Qt Creator's debugger works for optimized builds + on Linux and Mac OS X. However, optimization may lead to re-ordering of + instructions or sometimes even complete removal of some local variables. + In this case, the \gui{Locals and Watchers} view may show unexpected data. + \endtable + + \note + + \bold{Note:} The debug information provided by gcc does not include + enough information about the time at which a variable is initialized. + Qt Creator therefore can not tell whether the contents of a local + variable contains "real data", or "initial noise". If an QObject + appears uninitialized, its value will be reported as "out of scope". + Not all uninitialized objects can be recognized as such, though. + + The \gui{Locals and Watchers View} also gives accesst to the most powerful + feature of the Qt Creator Debugger: The comprehensive display of data + of objects of some of Qt's basic classes. + + To start using that feature, select \gui{Debug} and \gui{Use Custom + Display for Qt Objects}. The \gui{Locals and Watchers View} will + be re-organized to give a more high-level view of the objects + in question. So instead of displaying a pointer to some private + data structure in case of QObject, a list of children, signals + and slots will be shown. + + Similarily, instead of showing a bunch of pointers and ints, + a QHash or QMap will display its contents in an orderly fashion, + a QFileInfo will expose e.g. access data, and the otherwise + "opaque" QVariant gives access to the "real" contents. + + The \gui{Locals and Watchers View} can be used to change the + contents of variables of simple data types like int or float + while the program is stopped. To do so, click into the 'Value' + column, modify the value there, and hit \key{Return}. + + + + \section2 Modules + + The \gui{Modules View} is hidden by default and only useful in + connection with the experimental feature of delayed debug + information loading. This feature is accessible by selecting + \gui{Debug} and \gui{Fast Debugger Start}. When using the + feature, debug information coming from the Qt library itself + are not loaded on application startup, thereby reducing the + startup times for some applications. The \gui{Modules View} + can then be used to load this information manually if needed. + Note that the debugger may fail to set some breakpoints in + this scenarios. + + \section2 Disassembler View and Registers View + + Both the \gui{Disassembler View} and \gui{Registers View} are hidden + by default. The former shows the disassembled code of the current + function, the latter the current state of the CPU registers. + Both views are mainly useful in connection with the low-level + \gui{Step single instruction} and \gui{Step over single instruction} + commands + + + + \section1 A short walk through the debugger frontend + + In our \l{Writing a Simple Program with Qt Creator}{TextFinder} + example, we read a text file into a QString and then display it with a + QTextEdit. Suppose, you would like to look at this QString, \c{line}, + and see what data it actually stores. Follow the steps described below + to place a break point and view the QString object's data. + + \table + \row + \i \inlineimage qtcreator-setting-breakpoint1.png + \i \bold{Setting a Breakpoint} + + First, we set a breakpoint on the line where we invoke + \l{QTextEdit::}{setPlainText()} by clicking between the line number and + the window border. Then, select \gui{Start Debugging} from the + \gui{Debug} menu or press \key{F5}. + \endtable + + Breakpoints are visible in the \gui{Breakpoints} view, shown below, in + \gui{Debug} mode. If you wish to remove a breakpoint, simply right + click on it and select \gui{Delete breakpoint} from the context menu. + + \image qtcreator-setting-breakpoint2.png + + To view the contents of \c{line}, take a look at the \gui{Locals and + Watchers} view. + + \image qtcreator-watcher.png + + Suppose we modify our \c{on_findButton_clicked()} function to move back + to the start of the document and continue searching once the cursor + hits the end of the document. Adding this functionality can be done + with the code snippet below: + + \code + void TextFinder::on_findButton_clicked() + { + QString searchString = ui.lineEdit->text(); + + QTextDocument *document = ui.textEdit->document(); + QTextCursor cursor = ui.textEdit->textCursor(); + cursor = document->find(searchString, cursor, + QTextDocument::FindWholeWords); + ui.textEdit->setTextCursor(cursor); + + bool found = cursor.isNull(); + + if (!found && previouslyFound == true) { + int ret = QMessageBox::question(this, tr("End of Document"), + tr("I have reached the end of the document. Would you like " + "me to start searching from the beginning of the document?"), + QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + + if (ret == QMessageBox::Yes) { + cursor = document->find(searchString, + QTextDocument::FindWholeWords); + ui.textEdit->setTextCursor(cursor); + } else + return; + } + previouslyFound = found; + } + \endcode + + However, if you compile and run this code, the application will not + work correctly due to a logic error. To locate this logic error, you + can step through the code using the following buttons: + + \image qtcreator-debugging-buttons.png +*/ + + +/*! + \contentspage index.html + \previouspage creator-debugging.html + \page creator-tips.html + \nextpage creator-glossary.html + + \title Tips and Tricks + + \bold{Quick mode switch} + + You can quickly switch between modes by pressing \key{Ctrl+1}, + \key{Ctrl+2}, etc. + + \bold{Other keyboard shortcuts} + + There are a lot of other \l{keyboard-shortcuts}{keyboard shortcuts}. + + \bold{Command line} + + You can start Qt Creator from a command prompt with an already + existing session or \c{.pro} file by giving the name as argument on the + command line. + + \bold{Sidebar} + + You can hide/unhide the sidebar in the edit and debug mode + by clicking on the corresponding icon on the left bottom. + Keyboard shortcut is \key{Alt+0}. + + \bold{Display signals and slots} + + If you have an instance of a class derived from QObject and + want to find all other objects connected to one of its + slots by Qt's signals-and-slots mechanism, enable + \gui{Debug} and \gui{Use Custom Display for Qt Objects}. + In the \gui{Locals and Watchers View}, expand the object's + entry and open the wanted slot in the "slots" subitem. The + objects connect to this slot are exposed as children of + this slot. The same works with signals. + + \bold{Low level display} + + If the special debugging of Qt objects fails due to data + corruption within the debugged objects, you can switch the + special debugging off in the \gui{Debug} menu. This will make + the low-level structures visible again. +*/ + +/*! + \contentspage index.html + \previouspage creator-tips.html + \page creator-glossary.html + \nextpage creator-known-issues.html + + \title Glossary + + \bold{System Qt} + + \target glossary-system-qt + The version of Qt installed on your system. + This is the one whose \c qmake command is found in the \c PATH. + + \bold{Default Qt} + + \target glossary-default-qt + The version of Qt configured in \gui{Tools + -> Options -> Qt 4 -> Default Qt Version}. This is the version + used by new projects. It defaults to the System Qt. + + \bold{Project Qt} + + \target glossary-project-qt + The version of Qt configured in \gui{Build&Run + -> Build Settings -> Build Configurations}. This is the version + actually used by the project. It defaults to the Default Qt. + + \bold{Shadow Build} + + \target glossary-shadow-build + Shadow building means building the project not in the source directory, + but in a seperate \bold{build directory}. This has the benefit of keeping + the source directory clean. It is also considered "best practice" if + you need many build configurations for a single set of sources. + +*/ + +/*! + \contentspage index.html + \previouspage creator-glossary.html + \page creator-keyboard-shortcuts.html + + \title Keyboard Shortcuts + + Qt Creator provides various keyboard shortcuts to aid in the development + process. These shortcuts are listed in the table below: + + \table + \header + \o Function + \o Key Combination + \row + \o Activate Build & Run Mode + \o Ctrl + 4 + \row + \o Activate Debug Mode + \o Ctrl + 3 + \row + \o Activate Edit Mode + \o Ctrl + 2 + \row + \o Activate Help Mode + \o Ctrl + 5 + \row + \o Activate Output Mode + \o Ctrl + 6 + \row + \o Activate Welcome Mode + \o Ctrl + 1 + \row + \o Find + \o Ctrl + F + \row + \o Find Next + \o F3 + \row + \o Go back to Code Editor (May require more than one press) + \o Esc + \row + \o Go to a Line + \o Ctrl + L + \row + \o Start Debugging + \o F5 + \row + \o Stop Debugging + \o Shift + F5 + \row + \o Toggle Application Output + \o Alt + 3 + \row + \o Toggle Code Declaration and Definition + \o F2 + \row + \o Toggle Header File and Source File + \o F4 + \row + \o Toggle Side Bar + \o Alt + 0 + \row + \o Toggle Task List + \o Alt + 1 + \row + \o Toggle Search Results + \o Alt + 2 + \row + \o Toggle Compile Output + \o Alt + 4 + \row + \o Select Welcome Mode + \o Ctrl + 1 + \row + \o Select Edit Mode + \o Ctrl + 2 + \row + \o Select Debug Mode + \o Ctrl + 3 + \row + \o Select Build & Run Mode + \o Ctrl + 4 + \row + \o Select Help Mode + \o Ctrl + 5 + \row + \o Select Output Mode + \o Ctrl + 6 + \endtable +*/ + +/*! + \contentspage index.html + \previouspage creator-keyboard-shortcuts.html + \page creator-known-issues.html + + \title Known Issues of Version 0.9 (Technical Preview) + + There are some known issues with the Technical Preview. + The development team is aware of those, there is no need to report them as bug. + + \list + \o The central editor sometimes loses it "changed" status marker. + + \o There is a kernel bug essentially making debugging unreliable + on 2.6.24 kernels for i386 (which is, unfortunately, the default + on Ubuntu 8.04). + See \l{https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/230315/} + for details. + The only solution for this problem is to boot another kernel. + + \o gdb sometimes takes very long to load debugging symbol, + especially from big libraries like libQtWebKit. Starting debugging + can take up to several minutes without visible progress. + + \o Paths or file names containing spaces or special characters like colons, + dollar signs, hash marks etc. may create difficulties. + Some of the tools Qt Creator uses in the background to do the "real + work" have restrictions on the characters that are allowed in file + and directory names. To be on the safe side, it is strongly + recommended to create projects and project items only with names + consisting of plain characters, numbers, underscores, and hyphens. + + \o \c .pro files are reformatted if files are added/removed. + Whitespace is not preserved. + + \o No IDE support for adding files to include (\c .pri) files. + + \o No IDE support for adding/removing sub-projects. + Project hierarchies (SUBDIRS template) have to be created by hand. + + \o The file system sidebar does not update automatically. + As a workaround you can switch to another directory and then back. + + \o The resource system of the embedded version of Qt Designer + does not interact with the project management. + + \o Loading KDE4 designer plugins breaks the style, due to a bug in KDE. + \endlist +*/ + |
