// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
    \page creator-how-to-create-qtif.html
    \previouspage creator-how-tos.html

    \ingroup creator-how-to-projects-create

    \title Create \QIF projects

    Use the \l {\QIF} tools and core APIs to implement middleware APIs, backends,
    and services. With the \QIF Generator, you can use the QFace interface
    definition language (IDL) to define new APIs and generate Qt C++ classes and
    QML types.

    \QIF consists of:

    \list
        \li The core module, which has base classes and common code for all APIs
            that you create.
        \li A front-end API for a \e feature.
        \li A backend interface for the feature, and one or more backends that
            implement it to connect to either the underlying service or to a
            simulation of it.
    \endlist

    To make it possible to reuse code from previous projects, while incorporating
    code developed by many teams, \QIF feature APIs are split into two layers: a
    frontend and a backend. You can connect one frontend to many backends, as the
    core module makes it easy to find the corresponding backend.

    To create a \QIF project for a feature with a frontend and a backend:

    \list 1
        \li Go to \uicontrol File > \uicontrol {New Project} >
            \uicontrol {Other Project}, and select \uicontrol {\QIF Project}.
        \li Specify the name and location of the application.
        \li Select \uicontrol Next.
        \li In \uicontrol {Project name}, type the name of the project.
            \image {qtcreator-new-project-qtif.webp} {Configure Interface dialog}
        \li In \uicontrol {Interface name}, type the name of the interface that
            describes the data to exchange between the frontend and backend of
            the feature.
        \li Select \uicontrol {Add sample code to the project} to generate
            boilerplate code for the project.
        \li Select \uicontrol {Generate a zoned interface} to create a single
            API for many points, such as operating the windows, mirrors, and
            air-conditioning of a car.
        \li In \uicontrol {Backend setup}, select options for generating the
            backend.
        \li Select \uicontrol Next to select a kit for building and running the
            project.
        \li Select \uicontrol Next to create the project.
    \endlist

    Change the boilerplate code in the project to implement a feature.

    \sa {Create Projects}{How To: Create Projects}
*/
