/**************************************************************************** ** ** Copyright (c) 2012 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of Qt Creator ** ** ** GNU Free Documentation License ** ** Alternatively, this file may be used under the terms of the GNU Free ** Documentation License version 1.3 as published by the Free Software ** Foundation and appearing in the file included in the packaging of this ** file. ** ** ****************************************************************************/ // ********************************************************************** // NOTE: the sections are not ordered by their logical order to avoid // reshuffling the file each time the index order changes (i.e., often). // Run the fixnavi.pl script to adjust the links to the index order. // ********************************************************************** /*! \contentspage index.html \previouspage creator-project-managing.html \page creator-project-creating.html \nextpage creator-project-opening.html \title Creating Projects Creating a project enables you to: \list \o Group files together \o Add custom build steps \o Include forms and resource files \o Specify settings for running applications \endlist Setting up a new project in \QC is aided by a wizard that guides you step-by-step through the project creation process. The wizards prompt you to enter the settings needed for that particular type of project and create the necessary files for you. You can add your own custom wizards to standardize the way subprojects and classes are added to a project. The wizards create projects that use the Qt build tool, qmake. It is a cross-platform system for build automation that helps simplify the build process for development projects across different platforms. qmake automates the generation of build configurations so that only a few lines of information are needed to create each configuration. For more information about qmake, see the \l{http://qt-project.org/doc/qt-4.8/qmake-manual.html}{qmake Manual}. You can modify the build and run settings for qmake projects in the \gui Projects mode. Alternatively, you can use the CMake build automation system and set up the projects manually. In addition, you can import projects as \e {generic projects} that do not use qmake or CMake. This enables you to use \QC as a code editor and to fully control the steps and commands used to build the project. You can install tools for mobile devices as part of an SDK. The \l{glossary-buildandrun-kit}{kits} and build and run settings for the installed device types are set up automatically. However, you might need to install and configure some additional software on the devices to be able to connect to them from the development PC. \section1 Using Project Wizards In the first step, you select a template for the project. You can filter templates (1) to view only those that apply to a particular device type. \image qtcreator-new-qt-quick-project-wizard.png Next, you select a location for the project and specify settings for it. When you have completed the steps, \QC automatically generates the project with required headers, source files, user interface descriptions and project files, as defined by the wizard. For example, if you choose to create a Qt Quick application, \QC generates a QML file that you can modify with the integrated \QMLD. \section1 Selecting Project Type You can use wizards to create following types of projects: \list \o Applications \list \if defined(qcmanual) \o Qt GUI Application Use \QD forms to design a Qt widget based user interface for the desktop and C++ to implement the application logic \o Mobile Qt Application Use \QD forms to design a Qt widget based user interface for mobile devices and C++ to implement the application logic. Select this template to develop for devices that support only Qt 4.6.x \endif \o Qt Quick Application (Built-in Elements) Use built-in QML elements to design user interfaces based on Qt Quick 1 (Qt 4.7.1, or later) or Qt Quick 2 (Qt 5) with a custom look and feel and QML and C++ code to implement the application logic \o Qt Quick 1 Application for MeeGo Harmattan Use Qt Quick Components for MeeGo Harmattan to design a user interface with the platform look and feel \o Qt Quick 1 Application (from Existing QML File) Convert existing Qt Quick 1 applications to projects that you can run in \QC or deploy to mobile devices \o Qt Console Application Use a single main.cpp file \o HTML5 Application Use a QtWebKit view to design the user interface and HTML5 and C++ code to implement the application logic \o Qt Quick UI Use a single QML file that contains the main view. You can review Qt Quick UI projects in a \l{Previewing QML Files} {preview tool} and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of projects \endlist \o Libraries \list \o C++ Library Shared or static C++ library based on qmake \o Qt Quick 1 Extension Plugin C++ plugin that makes it possible to offer extensions that can be loaded dynamically into Qt Quick 1 applications by using the QDeclarativeEngine class \o Qt Quick 2 Extension Plugin C++ plugin that makes it possible to offer extensions that can be loaded dynamically into Qt Quick 2 applications by using the QQmlEngine class \o \QC Plugin \endlist \o Other Projects \list \o Qt Unit Test Qt unit tests for features or classes \o Qt Custom Designer Widgets Custom \QD widget or widget collection \o Empty Qt Project Empty Qt project that is based on qmake but does not use any default classes \o Subdirs Project Subprojects that enable you to structure your qmake projects as a tree hierarchy \endlist \o Non-Qt Projects \list \o Plain C or C++ Project Plain C or C++ project that uses qmake but does not use the Qt library \o Plain C or C++ Project (CMake Build) Plain C or C++ project that uses CMake but does not use the Qt library \endlist \o Import Project \list \o Project from version control Import a project from a supported version control system. For more information on how version control systems are integrated in \QC, see \l{Using Version Control Systems} \o Import Existing Project Import an existing project that does not use any of the supported build systems: qmake, CMake, or Autotools. This enables you to use \QC as a code editor \endlist \endlist To create a new project, select \gui File > \gui{New File or Project} and select the type of your project. The contents of the wizard dialogs depend on the project type and the \l{glossary-buildandrun-kit}{kits} that you select in the \gui {Kit Selection} dialog. Follow the instructions of the wizard. For examples of creating different types of projects, see \l{Tutorials}. For more information about creating Qt Quick projects, see \l {Creating Qt Quick Projects}. To change the location of the project directory, and to specify settings for building and running projects, select \gui{Tools} > \gui{Options} > \gui{Build & Run} > \gui{General}. To specify build and run settings for different target platforms, select \gui Projects. \section1 Adding Files to Projects You can use wizards also to add individual files to your projects. You can create the following types of files: \list \o C++ C++ class, source, or header files that you can use to write the application logic in both Qt Quick projects and \if defined(qcmanual) Qt widget based projects \endif \o Qt \list \if defined(qcmanual) \o \QD forms and \QD form classes, which specify parts of user interfaces in Qt widget based projects \endif \o Qt resource files, which allow you to store binary files in the application executable \o QML files, which specify elements in Qt Quick projects. \gui {Qt Quick 1} creates a QML file that imports Qt Quick 1.1 and \gui {Qt Quick 2} creates a QML file that imports Qt Quick 2.0. Select \gui {Qt Quick 1} to add files to a Qt Quick 1 application and \gui {Qt Quick 2} to add files to a Qt Quick 2 application. \o JavaScript files that you can use to write the application logic in Qt Quick projects \endlist \o GLSL GLSL files that define fragment and vertex shaders in both Qt Quick projects and Qt widget based projects \o General \list \o Text files \o Scratch buffers that use temporary files. You can create this type of files for temporarily storing information that you do not intend to save \endlist \endlist \section2 Creating C++ Classes The \gui {C++ Class Wizard} allows you to create a C++ header and source file for a new class that you can add to a C++ project. Specify the class name, base class, and header and source files for the class. The wizard supports namespaces. To use a namespace, enter a qualified class name in the \gui {Class name} field. For example: MyNamespace::MySubNamespace::MyClass. \image qtcreator-cpp-class-wizard.png "Enter Class Name dialog" The names of the header and source file are based on the class name. To change the default suffix of a file, select \gui Tools > \gui Options > \gui {C++} > \gui {File Naming}. You can create your own project and class wizards. For more information, see \l{Adding New Custom Wizards}. \section2 Creating OpenGL Fragment and Vertex Shaders Qt provides support for integration with OpenGL implementations on all platforms, which allows you to display hardware accelerated 3D graphics alongside a more conventional user interface. For more information, see \l{http://qt-project.org/doc/qt-4.8/qtopengl.html}{QtOpenGL Module}. You can use the QGLShader class to compile OpenGL shaders written in the OpenGL Shading Language (GLSL) and in the OpenGL/ES Shading Language (GLSL/ES). QGLShader and QGLShaderProgram shelter you from the details of compiling and linking vertex and fragment shaders. You can use \QC code editor to write fragment and vertex shaders in GLSL or GLSL/ES. The code editor provides syntax highlighting and code completion for the files. \image qtcreator-new-opengl-file.png "New OpenGL file wizard" \section2 Displaying Additional File Types in Projects Pane \QC determines whether to display files from the project folder in the \gui Projects pane depending on the file type (.pro, .pri, .cpp, .h, .qrc, and so on). To display other types of files, edit the project file. Add filenames as values of the \c {OTHER_FILES} variable. You can also use wildcards. For example, the following code specifies that text files are displayed in the \gui Projects pane: \code OTHER_FILES += *.txt \endcode This also makes the files available in the \gui Locator. \section1 Adding Subprojects to Projects In addition to Qt libraries, you can link your application to other libraries, such as system libraries or your own libraries. Further, your own libraries might link to other libraries. To be able to compile your project, you must add the libraries to your project. This also enables code completion and syntax highlighting for the libraries. The procedure of adding a library to a project depends on the build system that you use. When you create a new project, you can add it to another project as a subproject in the \gui{Project Management} dialog. However, the root project must specify that qmake uses the \c subdirs template to build the project. To create a root project, select \gui {File > New File or Project > Other Project > Subdirs Project > Choose}. On the \gui Summary page, select \gui {Finish & Add Subproject} to create the root project and to add another project, such as a C++ library. The wizard creates a project file (.pro) that defines a \c subdirs template and the subproject that you add as a value of the \l{http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#subdirs} {SUBDIRS variable}. It also adds all the necessary files for the subproject. To add more subprojects, right-click the project name in the \gui Projects pane, and select \gui {New Subproject} in the context menu. To remove subprojects, right-click the project name in the \gui Projects pane, and select \gui {Remove Subproject} in the context menu. To specify dependencies, use the \gui{Add Library} wizard. For more information, see \l{Adding Libraries to Projects}. \section1 Related Topics \list \o \l{Opening Projects} \o \l{Adding Libraries to Projects} \o \l{Adding New Custom Wizards} \o \l{Setting Up a CMake Project} \o \l{Setting Up a Generic Project} \endlist */