| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \contentspage{index.html}{Qt Creator} | 
					
						
							|  |  |  |     \page index.html | 
					
						
							| 
									
										
										
										
											2008-12-16 13:58:26 +01:00
										 |  |  |     \nextpage creator-quick-tour.html | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \title Qt Creator Manual | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 14:12:20 +01:00
										 |  |  |     \section1 Version 0.9.1 (Beta) | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 14:12:20 +01:00
										 |  |  |     \note The current version of Qt Creator is 0.9.1 (Beta). It is | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     possible to edit source code, compile, run and debug applications; other | 
					
						
							|  |  |  |     features are still under development. Please send bug reports and | 
					
						
							|  |  |  |     suggestions to qt-creator@trolltech.com. To subscribe, send a | 
					
						
							|  |  |  |     message with the word \e subscribe to qt-creator-request@trolltech.com. | 
					
						
							|  |  |  |     For more information on Qt mailing lists, visit http://lists.trolltech.com | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \table | 
					
						
							|  |  |  |     \row | 
					
						
							| 
									
										
										
										
											2008-12-16 14:50:00 +01:00
										 |  |  |     \o \inlineimage qtcreator-screenshots.png | 
					
						
							|  |  |  |     \row | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \o Qt Creator includes a wide range of useful features. Among them are: | 
					
						
							|  |  |  |     \list 1 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |         \o \bold{Smart Code Editor}: The code editor provides syntax | 
					
						
							|  |  |  |             highlighting as well as code completion. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \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. | 
					
						
							| 
									
										
										
										
											2008-12-12 20:37:17 +01:00
										 |  |  |         \o \bold{Locator}: A powerful navigation tool that lets the user locate | 
					
						
							|  |  |  |            files and classes using minimal keystrokes. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \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 | 
					
						
							| 
									
										
										
										
											2009-01-12 09:36:01 +01:00
										 |  |  |        \o \l{A Quick Tour of Qt Creator} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |        \o \l{Creating a Project in Qt Creator} | 
					
						
							| 
									
										
										
										
											2009-01-14 16:02:50 +01:00
										 |  |  |        \o \l{The Code Editor} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |        \o \l{Build Settings} | 
					
						
							| 
									
										
										
										
											2009-01-14 16:02:50 +01:00
										 |  |  |        \o \l{Qt Version Management} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |        \o \l{Writing a Simple Program with Qt Creator} | 
					
						
							| 
									
										
										
										
											2009-01-15 16:01:58 +01:00
										 |  |  |        \o \l{Qt Creator and Version Control Systems} | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |        \o \l{Navigating Quickly Around Your Code with Locator} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |        \o \l{Debugging with Qt Creator} | 
					
						
							|  |  |  |        \o \l{Tips and Tricks} | 
					
						
							| 
									
										
										
										
											2009-01-12 12:38:54 +01:00
										 |  |  |        \o \l{Keyboard Shortcuts} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |        \o \l{Glossary} | 
					
						
							| 
									
										
										
										
											2008-12-16 14:14:26 +01:00
										 |  |  |        \o \l{Known Issues of Version 0.9.1 (Beta)} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \endlist | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 14:29:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							|  |  |  |     \page creator-quick-tour.html | 
					
						
							|  |  |  |     \nextpage creator-build-settings.html | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-12 09:36:01 +01:00
										 |  |  |     \title A Quick Tour of Qt Creator | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     The labeled screenshot below shows some of the components of Qt Creator, in | 
					
						
							|  |  |  |     \gui Edit mode. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-breakdown.png | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 15:14:36 +01:00
										 |  |  |     \section1 The Mode Selectors | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     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. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     Mode selectors allow you to quickly switch between tasks: Editing, browsing | 
					
						
							|  |  |  |     the Qt Creator manual, setting up the build environment, etc. You can | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     load recent sessions or individual projects. This is the mode you will see | 
					
						
							|  |  |  |     if Qt Creator is run without command line switches. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     \o \gui{Edit Mode} - Lets you edit both project and source files. A sidebar | 
					
						
							|  |  |  |     on the left provides different views to navigate between files. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \o \gui{Debug Mode} - Provides various ways to inspect the state of the | 
					
						
							| 
									
										
										
										
											2008-12-16 14:08:58 +01:00
										 |  |  |     program while debugging. See \l{Debugging With Qt Creator} for a hands-on | 
					
						
							|  |  |  |     description of how to use this mode. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     \o \gui{Projects Mode} - Lets you configure how projects can be built and | 
					
						
							|  |  |  |     executed. Under the list of projects, there are tabs to configure the  | 
					
						
							|  |  |  |     build, run, and editor settings. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \o \gui{Help Mode} - Shows any documentation registered by Qt Assistant, | 
					
						
							|  |  |  |     such as the Qt library and Qt Creator documentation. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     \o \gui{Output Mode} - Lets you examine various data in detail, for example | 
					
						
							|  |  |  |     build issues as well as compile and application output. This information | 
					
						
							|  |  |  |     is also available in the output panes. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \endlist | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section1 The Output Panes | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     The task pane in Qt Creator can display one of four different panes: | 
					
						
							|  |  |  |     \gui{Build Issues}, \gui{Search Results}, \gui{Application Output}, and | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |     \gui{Compile Output}. These panes are available in all modes. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     \section2 Build Issues | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     The {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 the | 
					
						
							|  |  |  |     compiler and collects them in an organized way. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     \image qtcreator-build-issues.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \section2 Search Results | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     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. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-search-pane.png | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section2 Application Output | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     The \gui{Application Output} pane displays the status of the program when | 
					
						
							|  |  |  |     it is executed and debug output, e.g., output from qDebug(). | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-application-output.png | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     \section2 Compile | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |     The \gui{Compile Output} pane provides all the output from the compiler. In | 
					
						
							|  |  |  |     other words, it is a more verbose version of information displayed in the | 
					
						
							| 
									
										
										
										
											2008-12-11 11:20:25 +01:00
										 |  |  |     \gui{Build Issues} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-compile-pane.png | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-12 16:29:51 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \section1 Session Management in Qt Creator | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ### screenshot | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     In Qt Creator, a session is a collection of loaded projects, opened files, | 
					
						
							|  |  |  |     editor settings, and so on. When you run Qt Creator, you have a default | 
					
						
							|  |  |  |     session. You can create a new session using the \gui{Session Manager...}, | 
					
						
							|  |  |  |     available in the \gui{File -> Session} menu. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     To switch between sessions, select \gui{File -> Session}. If you do not | 
					
						
							|  |  |  |     create and select any session, Qt Creator will always use the default | 
					
						
							|  |  |  |     session. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \omit | 
					
						
							|  |  |  |     session management can also store project dependencies, thorbjorn is | 
					
						
							|  |  |  |     currently working on it | 
					
						
							|  |  |  | \endomit | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \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. | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     For more information on Qt Designer, you can refer to | 
					
						
							| 
									
										
										
										
											2008-12-16 14:08:58 +01:00
										 |  |  |     \l{http://doc.trolltech.com/designer-manual.html}{The Designer Manual}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-formedit.png | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section1 Keyboard Navigation | 
					
						
							|  |  |  |     | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     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 | 
					
						
							|  |  |  |     \l{Navigating Quickly Around Your Code with Locator}{navigation} shortcuts | 
					
						
							|  |  |  |     are available to help speed up the process of developing your application. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-14 16:02:50 +01:00
										 |  |  | /*! \contentspage index.html | 
					
						
							|  |  |  |     \previouspage creator-quick-tour.html | 
					
						
							|  |  |  |     \page creator-code-editor.html | 
					
						
							|  |  |  |     \nextpage creator-build-settings.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \title The Code Editor | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ### SCREENSHOT of the editor in action | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-14 16:53:03 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \table | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  Block navigation | 
					
						
							| 
									
										
										
										
											2009-01-16 16:39:08 +01:00
										 |  |  |             \i  To navigate between blocks, e.g., from one \bold{\{} to another | 
					
						
							|  |  |  |                 \bold{\}} , use \key{Ctrl+[} and \key{Ctrl+]}. | 
					
						
							| 
									
										
										
										
											2009-01-14 16:53:03 +01:00
										 |  |  |         \row | 
					
						
							|  |  |  |             \i  Block selection | 
					
						
							|  |  |  |             \i  To select a current block, use \key{Ctrl+U}. Pressing | 
					
						
							|  |  |  |                 \key{Ctrl+U} again extends the selection to the parent block. | 
					
						
							|  |  |  |                 To deselect, use \key{Ctrl+Shift+U}.     | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  Moving lines up and down | 
					
						
							| 
									
										
										
										
											2009-01-16 15:35:49 +01:00
										 |  |  |             \i   | 
					
						
							| 
									
										
										
										
											2009-01-14 16:53:03 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  Completion | 
					
						
							|  |  |  |             \i | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2009-01-15 13:07:25 +01:00
										 |  |  |             \i  Indenting Blocks | 
					
						
							| 
									
										
										
										
											2009-01-14 16:53:03 +01:00
										 |  |  |             \i | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2009-01-15 13:07:25 +01:00
										 |  |  |             \i  Commenting or Uncommenting Blocks | 
					
						
							|  |  |  |             \i | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  Switch between Header and Source | 
					
						
							| 
									
										
										
										
											2009-01-16 15:35:49 +01:00
										 |  |  |             \i  Use \key{F4}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  Increasing and Decreasing Font Size | 
					
						
							|  |  |  |             \i  Use \key{Ctrl+Scroll Wheel} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  Follow Symbols under The Cursor | 
					
						
							|  |  |  |             \i  Use \key{F2} and \key{Shift+F2}. This feature works with | 
					
						
							|  |  |  |                 namespaces, classes, methods, variables, include statements, | 
					
						
							|  |  |  |                 and macros. | 
					
						
							| 
									
										
										
										
											2009-01-14 16:53:03 +01:00
										 |  |  |     \endtable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     More: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Collapse | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Up/Down/Page Up/Page Down - hold ctrl to prevent the cursor from moving | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-14 16:02:50 +01:00
										 |  |  |     To switch to an external editor, select \gui{Open in external editor} from | 
					
						
							|  |  |  |     the \gui{Edit -> Advanced} menu. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							| 
									
										
										
										
											2009-01-16 16:02:14 +01:00
										 |  |  |     \previouspage creator-code-editor.html | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \page creator-build-settings.html | 
					
						
							|  |  |  |     \nextpage creator-creating-project.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \title Build Settings | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \table | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |             \i \note Qt Creator currently supports \c qmake only. \c Makefile | 
					
						
							|  |  |  |                and \c CMake support is currently unavailable. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \endtable | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     To modify the build settings of your project, switch to the \gui{Projects} | 
					
						
							|  |  |  |     mode using the mouse or with \key{Ctrl+4}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 16:26:18 +01:00
										 |  |  |     \image qtcreator-buildsettingstab.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Action items to create, clone, or delete build configurations can be found | 
					
						
							| 
									
										
										
										
											2008-12-15 16:26:18 +01:00
										 |  |  |     at the bottom of the dialog. You can have as many build configurations as | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     needed. By default Qt Creator creates a \bold{debug} and \bold{release} | 
					
						
							|  |  |  |     build configuration. Both these configurations use the | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \l{glossary-default-qt}{Default Qt Version}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     In the tree on the left, a list of build configurations and their settings | 
					
						
							| 
									
										
										
										
											2008-12-15 16:26:18 +01:00
										 |  |  |     are displayed. The screenshot above shows the \bold{debug} and | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \bold{release} configurations and their corresponding settings: | 
					
						
							|  |  |  |     \bold{Build Environment} and \bold{Build Steps}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							| 
									
										
										
										
											2008-12-15 16:26:18 +01:00
										 |  |  |     to \l{glossary-shadow-build}{shadow build} the project. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 16:26:18 +01:00
										 |  |  |     \note The \bold{Gdb Macros Build} step builds a small library along with your | 
					
						
							|  |  |  |     project that is used for the custom display of Qt and STL objects in the | 
					
						
							|  |  |  |     integrated debugger. The library is created and built in a "qtc-gdbmacros" | 
					
						
							|  |  |  |     subfolder of your project's main directory, and loaded dynamically into your | 
					
						
							|  |  |  |     application if you run it in the debugger. If the | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     debugging helper seems to break your build or your application, you can | 
					
						
							| 
									
										
										
										
											2008-12-15 16:26:18 +01:00
										 |  |  |     remove the build step. You will still be able to debug applications, but the | 
					
						
							|  |  |  |     contents of Qt and STL data types will not be displayed properly. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-14 16:02:50 +01:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							|  |  |  |     \previouspage creator-build-settings.html | 
					
						
							|  |  |  |     \page creator-version-management.html | 
					
						
							|  |  |  |     \nextpage creator-creating-project.html | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-14 16:02:50 +01:00
										 |  |  |     \title Qt Version Management | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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}. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 14:29:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 08:53:01 +01:00
										 |  |  |         To create a new project, select \gui{New Project} from the \gui{File} menu. | 
					
						
							|  |  |  |         You can create one of the following three projects: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2008-12-16 08:53:01 +01:00
										 |  |  |         \list | 
					
						
							|  |  |  |             \o Qt4 Console Application | 
					
						
							|  |  |  |             \o Qt4 Gui Application | 
					
						
							|  |  |  |             \o C++ Library | 
					
						
							|  |  |  |         \endlist | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 08:53:01 +01:00
										 |  |  |         In this example, we select a \e{Qt4 Gui Application} and click \gui{OK}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  | 	    \i \inlineimage qtcreator-intro-and-location.png | 
					
						
							| 
									
										
										
										
											2009-01-12 09:36:01 +01:00
										 |  |  |             \i \bold{Setting the Project name and location} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 12:24:03 +01:00
										 |  |  |         Specify the name of the class you would like to create. The | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \e{Header file}, \e{Source file} and \e{Form file} fields will update | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |         automatically according to your choice of class name. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         You also have to select the base class for your class, either a | 
					
						
							| 
									
										
										
										
											2008-12-16 12:24:03 +01:00
										 |  |  |         QWidget, QDialog or QMainWindow,  from the drop down box. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  | 	    \i \inlineimage qtcreator-new-project-summary.png | 
					
						
							|  |  |  |             \i \bold{Creating the Project} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Finally, review the files that will be created for you. Click | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \gui{Done} and your project will be generated. | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     \endtable | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 14:29:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \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 | 
					
						
							| 
									
										
										
										
											2009-01-12 12:38:54 +01:00
										 |  |  |     detail. Remember to select QWidget as the Text Finder's base class. If | 
					
						
							|  |  |  |     your project is not yet loaded, you can load it by selecting \gui{Open} | 
					
						
							|  |  |  |     from the \gui{File} menu. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-12 12:38:54 +01:00
										 |  |  |     In your project you will have the following files: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 14:08:58 +01:00
										 |  |  |     Design the form above using a \l{http://doc.trolltech.com/qlabel.html} | 
					
						
							|  |  |  |     {QLabel}, \l{http://doc.trolltech.com/qlinedit.html}{QLineEdit}, | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qpushbutton.html}{QPushButton} and a | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qtextedit.html}{QTextEdit}. We recommend that | 
					
						
							|  |  |  |     you use a QGridLayout to lay out the | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qlabel.html}{QLabel}, | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qlinedit.html}{QLineEdit} and | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qpushbutton.html}{QPushButton}. The | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qtextedit.html}{QTextEdit} can then be added to | 
					
						
							|  |  |  |     a \l{http://doc.trolltech.com/qvboxlayout.html}{QVBoxLayout}, along with | 
					
						
							|  |  |  |     the \l{http://doc.trolltech.com/qgridlayout.html}{QGridLayout}. If you are | 
					
						
							|  |  |  |     new to designing forms with \QD, you can take a look at the  | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \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 | 
					
						
							| 
									
										
										
										
											2008-12-16 14:08:58 +01:00
										 |  |  |     contents of our input text file in the | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qtextedit.html}{QTextEdit}. This is done with | 
					
						
							|  |  |  |     the following code: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 14:08:58 +01:00
										 |  |  |     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 | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qtextedit.html#plainText-prop}{setPlainText()}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     For the \c{on_findButton_clicked()} slot, we extract the search string and | 
					
						
							| 
									
										
										
										
											2008-12-16 14:08:58 +01:00
										 |  |  |     use the \l{http://doc.trolltech.com/qtextedit.html#find}{find()} function | 
					
						
							|  |  |  |     to look for the search string within the text file. The code snippet below | 
					
						
							|  |  |  |     further describes it: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \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}. | 
					
						
							| 
									
										
										
										
											2008-12-16 14:48:15 +01:00
										 |  |  |     Then, click \gui{Continue}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-add-resource-wizard2.png | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     On this page you can choose to which project you want to add the new file. | 
					
						
							|  |  |  |     Make sure that \gui{Add to Project} is checked and | 
					
						
							|  |  |  |     "TextFinder" is selected as the \gui{Project}, and click | 
					
						
							|  |  |  |     \gui{Done}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 14:29:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							|  |  |  |     \previouspage creator-writing-program.html | 
					
						
							|  |  |  |     \page creator-navigation.html | 
					
						
							|  |  |  |     \nextpage creator-debugging.html | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     \title Navigating Quickly Around Your Code with Locator | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     With Qt Creator, navigating to different locations in your project or on | 
					
						
							| 
									
										
										
										
											2008-12-12 20:37:17 +01:00
										 |  |  |     your disk, e.g., files, classes, methods, etc., is trivial using | 
					
						
							|  |  |  |     \gui Locator -- a smart line edit at the bottom left of Qt Creator's | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     window. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 20:37:17 +01:00
										 |  |  |     \image qtcreator-locator.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     Suppose you would like to open your project's \c{main.cpp} file, click on | 
					
						
							| 
									
										
										
										
											2008-12-12 20:37:17 +01:00
										 |  |  |     \gui Locator or use \key{Ctrl+K}, type in the file name and then press | 
					
						
							|  |  |  |     \key Return. The file will be opened in the editor. You can also type | 
					
						
							|  |  |  |     part of a file name and use wildcard characters \c{*} and \c{?} to match | 
					
						
							|  |  |  |     \e{any} number of \e{any} characters. A list of all files matching your | 
					
						
							|  |  |  |     criteria will be displayed.  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \gui Locator not only allows you to navigate files on disk but also other | 
					
						
							| 
									
										
										
										
											2008-12-12 21:35:55 +01:00
										 |  |  |     "locations", which are organized with \bold{Filters}. Currently there are | 
					
						
							|  |  |  |     filters for: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \list | 
					
						
							| 
									
										
										
										
											2008-12-12 21:35:55 +01:00
										 |  |  |         \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, and, | 
					
						
							|  |  |  |         \o  a specific line in the document displayed on your editor, | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \endlist | 
					
						
							| 
									
										
										
										
											2008-12-12 21:35:55 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  |     \l{http://doc.trolltech.com/qdatastream.html}{QDataStream}, type: | 
					
						
							|  |  |  |     \key{Ctrl+K} to activate \gui Locator. Then type colon (\key{:}) followed | 
					
						
							|  |  |  |     by \key{Space} and the class name. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Below is a full list of \l{http://doc.trolltech.com/qdatastream.html} | 
					
						
							|  |  |  |     {QDataStream} related output: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-navigate-popup.png | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:35:55 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Filters can be added to provide quick navigation around files in a | 
					
						
							|  |  |  |     subdirectory structure defined by you. This way, you can acccess files you | 
					
						
							|  |  |  |     need, that are not directly mentioned in your project. Click on  | 
					
						
							|  |  |  |     \image qtcreator-locator-magnify.png | 
					
						
							|  |  |  |      and choose \gui{Configure...} from the menu displayed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-locator-customize.png | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This then displays the \gui Preferences dialog (\gui Options on Mac Os X) | 
					
						
							|  |  |  |     for navigation filters. Click \gui Add to create a new filter. In the | 
					
						
							|  |  |  |     \gui{Filter Configuration} dialog below, give your filter a name, select | 
					
						
							|  |  |  |     your preferred directories, set file patterns with a comma separated list, | 
					
						
							|  |  |  |     and specify a prefix string. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-navigate-customfilter.png | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:35:55 +01:00
										 |  |  |     After closing this dialog, \gui Locator will search the directories you | 
					
						
							|  |  |  |     selected for files matching your file patterns, and the information will be | 
					
						
							|  |  |  |     cached. Click \gui Refresh from the menu above to update the cached | 
					
						
							|  |  |  |     information. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 13:34:46 +01:00
										 |  |  |     The following table lists the filters currently available: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \table | 
					
						
							|  |  |  |         \header | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Function | 
					
						
							|  |  |  |             \o  Key Combination | 
					
						
							|  |  |  |             \o  Screenshot | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Go to a line in the current document | 
					
						
							|  |  |  |             \o  Ctrl+K, l, Space, and the line number | 
					
						
							|  |  |  |             \o  \image qtcreator-locator-line.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-15 11:57:05 +01:00
										 |  |  |             \o  Go to a symbol definition | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Ctrl+K, :, Space, and the function name | 
					
						
							| 
									
										
										
										
											2008-12-15 15:59:45 +01:00
										 |  |  |             \o  \image qtcreator-locator-symbols.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Go to a help topic | 
					
						
							|  |  |  |             \o  Ctrl+K, ?, Space, and the topic | 
					
						
							| 
									
										
										
										
											2008-12-15 14:29:59 +01:00
										 |  |  |             \o  \image qtcreator-locator-help.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Go to an opened document | 
					
						
							|  |  |  |             \o  Ctrl+K, o, Space, and the document name. | 
					
						
							| 
									
										
										
										
											2008-12-15 15:59:45 +01:00
										 |  |  |             \o  \image qtcreator-locator-opendocs.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Go to a file in the file system (browse the file system) | 
					
						
							|  |  |  |             \o  Ctrl+K, f, Space, and the file name. | 
					
						
							| 
									
										
										
										
											2008-12-15 14:14:06 +01:00
										 |  |  |             \o  \image qtcreator-locator-filesystem.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Go to a file in any project currently loaded | 
					
						
							|  |  |  |             \o  Ctrl+K, a, Space, and the function name. | 
					
						
							|  |  |  |             \o  \image qtcreator-locator-files.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Go to a file in the current project | 
					
						
							|  |  |  |             \o  Ctrl+K, p, Space, and the function name. | 
					
						
							| 
									
										
										
										
											2008-12-15 14:29:59 +01:00
										 |  |  |             \o  \image qtcreator-locator-current-project.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-15 11:57:05 +01:00
										 |  |  |             \o  Go to a class definition | 
					
						
							| 
									
										
										
										
											2008-12-15 11:11:18 +01:00
										 |  |  |             \o  Ctrl+K, c, Space, and the class name. | 
					
						
							|  |  |  |             \o  \image qtcreator-locator-classes.png | 
					
						
							| 
									
										
										
										
											2008-12-15 11:57:05 +01:00
										 |  |  |         \row | 
					
						
							|  |  |  |             \o  Go to a method definition | 
					
						
							|  |  |  |             \o  Ctrl+K, m, Space, and the class name. | 
					
						
							|  |  |  |             \o  \image qtcreator-locator-methods.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \endtable | 
					
						
							| 
									
										
										
										
											2008-12-15 14:14:06 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \note By default, if you press \key{Ctrl+K} and do not use a prefix to | 
					
						
							| 
									
										
										
										
											2008-12-15 14:29:59 +01:00
										 |  |  |     specify a filter, three filters will be enabled: \c{o}, \c{l}, and \c{a}. | 
					
						
							| 
									
										
										
										
											2008-12-15 14:14:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-15 13:07:25 +01:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							|  |  |  |     \previouspage creator-navigation.html | 
					
						
							|  |  |  |     \page creator-version-control.html | 
					
						
							|  |  |  |     \nextpage creator-debugging.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \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/} | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  \bold{Subversion} | 
					
						
							|  |  |  |             \i  \l{http://subversion.tigris.org/} | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  \bold{Perforce} | 
					
						
							|  |  |  |             \i  \l{http://www.perforce.com} | 
					
						
							|  |  |  |     \endtable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section1 Setup | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  |     line clients can be located via the \c{PATH} environment variable. You can | 
					
						
							|  |  |  |     specify the path to the command line client's executable in the settings     | 
					
						
							|  |  |  |     pages that can be found under \gui{Options...} in the \gui{Tools} menu. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-15 13:50:22 +01:00
										 |  |  |     \section1 Usage | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     You can find the version control menu entires in a sub-menu of the | 
					
						
							|  |  |  |     \gui{Tools} menu. The version control system displayed here is the system | 
					
						
							|  |  |  |     that manages the current project. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Each version control system adds a pane to the \gui{Application Output} | 
					
						
							|  |  |  |     panes within which it will log the commands it executes, prepended by a | 
					
						
							|  |  |  |     timestamp and the relevant output. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-vcs-pane.png | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section2 Addings Files | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     When you create a new file or a new project, the wizards will display page | 
					
						
							|  |  |  |     requesting whether the files should be added to a version control system. | 
					
						
							|  |  |  |     This depends on whether the parent directory or the project is already | 
					
						
							|  |  |  |     under version control and the system supports the concept of adding files, | 
					
						
							|  |  |  |     e.g., \bold{Perforce} and \bold{Subversion}. Alternatively, you can also | 
					
						
							|  |  |  |     add files later on using the version control tool menus. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  |     file or project - comparing with the latest version stored in the | 
					
						
							|  |  |  |     repository and displaying 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 will open an editor | 
					
						
							|  |  |  |     displaying the file, scrolled to the line in question. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-vcs-diff.png | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section2 Viewing Versioning History and Change Details | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The versioning history of a file can be displayed by selecting the | 
					
						
							| 
									
										
										
										
											2009-01-16 16:02:14 +01:00
										 |  |  |     \gui{Log} (for \bold{git}) or \gui{Filelog} (for \bold{Perforce} and | 
					
						
							|  |  |  |     \bold{Subversion}) option. Typically, the log output will contain the | 
					
						
							| 
									
										
										
										
											2009-01-15 14:30:18 +01:00
										 |  |  |     date, the commit message, and a change or revision identifier. If you | 
					
						
							|  |  |  |     click on the identifier, a description of the change including the diff | 
					
						
							|  |  |  |     will be displayed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-vcs-log.png | 
					
						
							| 
									
										
										
										
											2009-01-15 16:04:52 +01:00
										 |  |  |     \image qtcreator-vcs-describe.png | 
					
						
							| 
									
										
										
										
											2009-01-15 14:30:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section2 Annotating Files | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Annotation views are obtained by selecting \gui{Annotate} or \gui{Blame}. | 
					
						
							|  |  |  |     This will display the lines of the file prepended by the change identifier | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  |     control system by choosing \gui{Commit} or \gui{Submit}. Qt Creator will | 
					
						
							|  |  |  |     display a commit page containing a text editor, where you can enter your | 
					
						
							|  |  |  |     commit message, and a checkable list of modified files to be included. | 
					
						
							|  |  |  |     When you are done, click \gui{Commit} to start committing. In addition, | 
					
						
							|  |  |  |     there is a \gui{Diff selected} button that brings up a diff view of the | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section2 Menu Entries Specific to git | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The git sub-menu contains additional entries: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \table | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \i  \gui{Stash} | 
					
						
							|  |  |  |             \i  Stash local changes prior to executing a \bold{pull}. | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2009-01-15 15:57:07 +01:00
										 |  |  |             \i  \gui{Pull} | 
					
						
							|  |  |  |             \i  Pull changes from the remote repository. If there are locally | 
					
						
							|  |  |  |                 modified files, you will be prompted to stash those changes. | 
					
						
							|  |  |  |         \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 | 
					
						
							|  |  |  |                 branch, simply double-click on it. Double-clicking on a remote | 
					
						
							|  |  |  |                 branch will first create a local branch with the same name that | 
					
						
							|  |  |  |                 tracks the remote branch, and then switch to it. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 \image qtcreator-vcs-gitbranch.png | 
					
						
							| 
									
										
										
										
											2009-01-15 14:30:18 +01:00
										 |  |  |     \endtable | 
					
						
							| 
									
										
										
										
											2009-01-15 13:50:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							|  |  |  |     \previouspage creator-navigation.html | 
					
						
							|  |  |  |     \page creator-debugging.html | 
					
						
							|  |  |  |     \nextpage creator-tips.html | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 15:14:36 +01:00
										 |  |  |     \title Debugging with Qt Creator | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 18:39:10 +01:00
										 |  |  |     \image qtcreator-debug-view.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							| 
									
										
										
										
											2008-12-08 15:14:36 +01:00
										 |  |  |           left margin or press \key F9 (\key F8 for Mac OS X). | 
					
						
							|  |  |  |        \o At a function that you want the program to stop -- enter the | 
					
						
							|  |  |  |           function's name in \gui{Set Breakpoint at Function...} under the | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |           \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. | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     It is possible to continue executing your program until the current | 
					
						
							|  |  |  |     function completes or jump to an arbitrary position in the current | 
					
						
							|  |  |  |     function. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \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. | 
					
						
							| 
									
										
										
										
											2008-12-08 15:14:36 +01:00
										 |  |  |     This stack trace is built up from \e{call stack frames}, each representing a | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 18:39:10 +01:00
										 |  |  |     \image qtcreator-debug-stack.png | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 15:14:36 +01:00
										 |  |  |     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. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \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:} | 
					
						
							| 
									
										
										
										
											2008-12-02 13:06:53 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |             \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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             \i  The debug information provided by gcc does not include enough | 
					
						
							|  |  |  |                 information about the time when a variable is initialized. | 
					
						
							|  |  |  |                 Qt Creator therefore can not tell whether the contents of a | 
					
						
							|  |  |  |                 local variable contains "real data", or "initial noise". If a | 
					
						
							|  |  |  |                 QObject appears uninitialized, its value will be reported as | 
					
						
							|  |  |  |                 "out of scope". However, not all uninitialized objects can be | 
					
						
							|  |  |  |                 recognized as such. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \endtable | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 13:06:53 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     The \gui{Locals and Watchers} view also provides access to the most | 
					
						
							|  |  |  |     powerful feature of the debugger: comprehensive display of data belonging | 
					
						
							|  |  |  |     to Qt's basic objects. To enable this feature, select \gui{Use Custom | 
					
						
							|  |  |  |     Display for Qt Objects} from the \gui Debug menu.The | 
					
						
							|  |  |  |     \gui{Locals and Watchers} view will be re-organized to provide a high-level | 
					
						
							|  |  |  |     view of the objects. For example, in case of QObject, instead of displaying | 
					
						
							|  |  |  |     a pointer to some private data structure, you will see a list of children, | 
					
						
							|  |  |  |     signals and slots. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     Similarly, instead of displaying many pointers and integers, Qt Creator's | 
					
						
							|  |  |  |     debugger will display the contents of a QHash or QMap in an orderly manner. | 
					
						
							|  |  |  |     Also, the debugger will display access data for QFileInfo and provide | 
					
						
							|  |  |  |     access to the "real" contents of QVariant. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The \gui{Locals and Watchers} view can be used to change the contents of | 
					
						
							|  |  |  |     variables of simple data types such as \c int or \c float when the program | 
					
						
							|  |  |  |     is stopped. To do so, click on the \gui Value column, modify the value | 
					
						
							|  |  |  |     with the inplace editor, and hit \key Enter (or \key Return). | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |      | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \section2 Modules | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     By default, the \gui Modules view is hidden as it is only useful with the | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     experimental delayed loaing of debug information feature. You can turn | 
					
						
							|  |  |  |     this feature on by selecting \gui{Fast Debugger Start}  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     With this feature, debug information from the Qt library itself is not | 
					
						
							|  |  |  |     loaded when the application starts up, thereby reducing the startup times | 
					
						
							|  |  |  |     for some applications. You can then use the \gui Modules view to manually | 
					
						
							|  |  |  |     load this information, if required. | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     \note In this scenario, some breakpoints may not be set by the debugger. | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |          | 
					
						
							|  |  |  |     \section2 Disassembler View and Registers View | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 20:11:04 +01:00
										 |  |  |     By default, both the \gui Disassembler and \gui Registers view are hidden. | 
					
						
							|  |  |  |     The \gui Disassembler view displays disassembled code for the current | 
					
						
							|  |  |  |     function; the \gui Registers view displays the current state of the CPU's | 
					
						
							|  |  |  |     registers. Both views are useful for low-level commands such as | 
					
						
							|  |  |  |     \gui{Step Single Instruction} and \gui{Step Over Single Instruction}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     \section1 A Walkthrough for the Debugger Frontend | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     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 | 
					
						
							|  |  |  |     breakpoint and view the QString object's data. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \table | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  | 	        \i \inlineimage qtcreator-setting-breakpoint1.png | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \i \bold{Setting a Breakpoint} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     First, we set a breakpoint on the line where we invoke | 
					
						
							| 
									
										
										
										
											2008-12-16 14:08:58 +01:00
										 |  |  |     \l{http://doc.trolltech.com/qtextedit.html#plainText-prop}{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}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \endtable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Breakpoints are visible in the \gui{Breakpoints} view, shown below, in | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     \gui{Debug} mode. If you wish to remove a breakpoint, simply right-click on | 
					
						
							|  |  |  |     it and select \gui{Delete breakpoint} from the context menu. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     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: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     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: | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     \image qtcreator-debugging-buttons.png | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							|  |  |  |     \previouspage creator-debugging.html | 
					
						
							|  |  |  |     \page creator-tips.html | 
					
						
							|  |  |  |     \nextpage creator-glossary.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \title Tips and Tricks | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     \bold{Quickly Switching between Modes} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     You can quickly switch between modes by pressing \key{Ctrl+1}, | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     \key{Ctrl+2}, and so on. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     \bold{Keyboard Shortcuts} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     Qt Creator provides a lot of useful keyboard shortcuts. A complete list can | 
					
						
							|  |  |  |     be found \l{Keyboard Shortcuts}{here}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:27:29 +01:00
										 |  |  |     \bold{Running Qt Creator from the Command Line} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 15:14:36 +01:00
										 |  |  |     You can start Qt Creator from a command prompt with the name of an existing | 
					
						
							|  |  |  |     session or \c{.pro} file by giving the name as argument on the command | 
					
						
							|  |  |  |     line. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |     \bold{Show and Hide the Sidebar} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |     You can show and hide the the sidebar in \gui Edit and \gui Debug mode by | 
					
						
							|  |  |  |     clicking on the corresponding icon, or by pressing \key{Alt+0}. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |     \bold{Display Signals and Slots} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |     If you have an instance of a class that is derived from QObject, and you | 
					
						
							|  |  |  |     you would like to find all other objects connected to one of your object's | 
					
						
							|  |  |  |     slots using Qt's signals and slots mechanism -- you can enable | 
					
						
							|  |  |  |     \gui{Use Custom Display for Qt Objects} feature under the \gui Debug menu. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |     In the \gui{Locals and Watchers} view, expand the object's entry and open | 
					
						
							|  |  |  |     the slot in the \e slots subitem. The objects connected to this slot are | 
					
						
							|  |  |  |     exposed as children of the slot. This method works with signals too. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |     \bold{Display Low Level Data} | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 15:59:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							|  |  |  |     \previouspage creator-tips.html | 
					
						
							|  |  |  |     \page creator-glossary.html | 
					
						
							|  |  |  |     \nextpage creator-known-issues.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \title Glossary | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |     \table | 
					
						
							|  |  |  |         \header | 
					
						
							|  |  |  |             \o  Term | 
					
						
							|  |  |  |             \o  Meaning | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |         \row | 
					
						
							|  |  |  |             \o  System Qt   \target glossary-system-qt | 
					
						
							|  |  |  |             \o  The version of Qt installed on your system. This is the Qt | 
					
						
							|  |  |  |                 version for the \c qmake command found in your \c PATH. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |         \row | 
					
						
							|  |  |  |             \o  Default Qt  \target glossary-default-qt | 
					
						
							|  |  |  |             \o  The version of Qt configured in \gui{Tools -> Options -> Qt 4 | 
					
						
							|  |  |  |                 -> Default Qt Version}. This is the Qt version used by your | 
					
						
							|  |  |  |                 new projects. It defaults to System Qt. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |         \row | 
					
						
							|  |  |  |             \o  Project Qt  \target glossary-project-qt | 
					
						
							|  |  |  |             \o  The version of Qt configured in \gui{Build&Run -> Build | 
					
						
							|  |  |  |                 Settings -> Build Configurations}. This is the Qt version that | 
					
						
							|  |  |  |                 is actually used by a particular project. It defaults to | 
					
						
							|  |  |  |                 Default Qt. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-05 15:24:45 +01:00
										 |  |  |         \row | 
					
						
							|  |  |  |             \o  Shadow Build    \target glossary-shadow-build | 
					
						
							|  |  |  |             \o  Shadow building means building a project in a separate | 
					
						
							|  |  |  |                 directory, the \e{build directory}. The build directory is | 
					
						
							|  |  |  |                 different from the source directory. One of the benefits of | 
					
						
							|  |  |  |                 shadow building is that it keeps your source directory clean. | 
					
						
							|  |  |  |                 Shadow building is the best practice if you need many build | 
					
						
							|  |  |  |                 configurations for a single set of source. | 
					
						
							|  |  |  |     \endtable | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 15:59:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \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 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Activate \gui Welcome mode | 
					
						
							|  |  |  |             \o Ctrl + 1 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Activate \gui Edit mode | 
					
						
							|  |  |  |             \o Ctrl + 2 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Activate \gui Debug mode | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Ctrl + 3 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Activate \gui Projects mode | 
					
						
							|  |  |  |             \o Ctrl + 4 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Activate \gui Help mode | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Ctrl + 5 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Activate \gui Output mode | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Ctrl + 6 | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \o Find | 
					
						
							|  |  |  |             \o Ctrl + F | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Find next | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o F3 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Go back to the code editor (\gui Edit mode: The first press | 
					
						
							|  |  |  |                gives the editor focus, without closing secondary windows; the | 
					
						
							|  |  |  |                second press closes all secondary windows. \gui Debug mode or | 
					
						
							|  |  |  |                \gui Help mode: Switch to \gui Edit mode.) | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Esc | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Go to a line | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Ctrl + L | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Start debugging | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o F5 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Stop debugging | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Shift + F5 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Toggle code declaration and definition | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o F2 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Toggle header file and source file | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o F4 | 
					
						
							|  |  |  |         \row | 
					
						
							|  |  |  |             \o Toggle Side Bar | 
					
						
							|  |  |  |             \o Alt + 0 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Toggle \gui{Build Issues} pane | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Alt + 1 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Toggle \gui{Search Results} pane | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Alt + 2 | 
					
						
							|  |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 22:05:38 +01:00
										 |  |  |             \o Toggle \gui{Application Output} pane | 
					
						
							|  |  |  |             \o Alt + 3 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |         \row | 
					
						
							| 
									
										
										
										
											2008-12-12 21:50:29 +01:00
										 |  |  |             \o Toggle \gui{Compile Output} pane | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |             \o Alt + 4 | 
					
						
							|  |  |  |     \endtable | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-15 15:59:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /*! | 
					
						
							|  |  |  |     \contentspage index.html | 
					
						
							|  |  |  |     \previouspage creator-keyboard-shortcuts.html | 
					
						
							|  |  |  |     \page creator-known-issues.html | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 14:12:20 +01:00
										 |  |  |     \title Known Issues of Version 0.9.1 (Beta) | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 14:12:20 +01:00
										 |  |  |     There are some known issues with Qt Creator 0.9.1 (Beta). | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     The development team is aware of those, there is no need to report them as bug. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \list | 
					
						
							| 
									
										
										
										
											2008-12-12 21:59:33 +01:00
										 |  |  |         \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 to this problem is to boot another | 
					
						
							|  |  |  |             kernel. | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         \o  Gdb may take long to load debugging symbols, especially from large | 
					
						
							|  |  |  |             libraries like \c libQtWebKit. Starting the debugging module can | 
					
						
							|  |  |  |             take up to several minutes without visible progress. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:59:33 +01:00
										 |  |  |         \o  Paths or file names containing spaces or special characters, e.g., | 
					
						
							|  |  |  |             colons, dollar signs, hash marks etc. may cause difficulties. This | 
					
						
							|  |  |  |             is because some of the tools Qt Creator uses in the background have | 
					
						
							|  |  |  |             restrictions on the characters allowed in file and directory names. | 
					
						
							|  |  |  |             To be on the safe side, we recomment creating projects and project | 
					
						
							|  |  |  |             items with names consisting of plain characters, numbers, | 
					
						
							|  |  |  |             underscores, and hyphens. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:59:33 +01:00
										 |  |  |         \o  \c{.pro} files are reformatted if files have been added or removed. | 
					
						
							|  |  |  |             Whitespace is not preserved. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:59:33 +01:00
										 |  |  |         \o  There is no IDE support for adding files to include (\c .pri) files. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:59:33 +01:00
										 |  |  |         \o  There is no IDE support for adding/removing sub-projects. Project | 
					
						
							|  |  |  |             hierarchies (SUBDIRS template) have to be created manually. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:59:33 +01:00
										 |  |  |         \o  The file system sidebar does not update automatically. As a | 
					
						
							|  |  |  |             workaround, switch to another directory and then back. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 21:59:33 +01:00
										 |  |  |         \o Loading KDE4 designer plugins breaks the style, due to a bug in KDE. | 
					
						
							| 
									
										
										
										
											2008-12-17 16:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         \o Scopes in .pro files are ignored, and environment variables not expanded. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         \o Code completion for generated UI header files is not updated properly | 
					
						
							|  |  |  |            after the first time. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         \o Code completion does not support typedefs (e.g. std::string) and | 
					
						
							|  |  |  |            private classes (e.g. class MyClass::Data {};). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         \o On Gnome, after minimizing Qt Creator and restoring again, the | 
					
						
							|  |  |  |            application window does not repaint properly until resized. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     \endlist | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 |