/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** 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. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \page uic.html
    \title User Interface Compiler (uic)
    \ingroup qttools
    \keyword uic

    \omit KEEP THIS FILE SYNCHRONIZED WITH uic.1 \endomit

    This page documents the \e{User Interface Compiler} for the \l{Qt Widgets}
    module. The \c uic reads an XML format user interface definition
    (\c .ui) file as generated by \l{Qt Designer Manual}{Qt
    Designer} and creates a corresponding C++ header file.

    Usage:
    \snippet snippets/code/doc_src_uic.qdoc 0

    \section1 Options

    The following table lists the command-line options recognized by
    \c uic.

    \table
    \header \li Option \li Description
    \row \li \c{-o <file>} \li Write output to \c <file> instead of to standard output.
    \row \li \c{-tr <func>} \li Use \c <func> for translating strings instead of \c tr().
    \row \li \c{-p} \li Don't generate guards against multiple inclusion (\c #ifndef FOO_H ...).
    \row \li \c{-h} \li Display the usage and the list of options.
    \row \li \c{-v} \li Display \c{uic}'s version number.
    \row \li \c{-d} \li Display the dependencies for the UI.
    \row \li \c{-n} \li Don't generate any #include directives.
    \row \li \c{--postfix <postfix>} \li Append \c <postfix> to all generated classnames.
    \row \li \c{--include <file>} \li Add #include \c <file> to the output.

    \endtable

    \section1 Examples

    If you use \c qmake, \c uic will be invoked automatically for
    header files.

    Here are useful makefile rules if you only use GNU make:

    \snippet snippets/code/doc_src_uic.qdoc 1

    If you want to write portably, you can use individual rules of the
    following form:

    \snippet snippets/code/doc_src_uic.qdoc 2

    You must also remember to add \c{ui_foo.h} to your \c HEADERS
    (substitute your favorite name).
*/
