doc/src/platforms/qtmac-as-native.qdoc
branchRCL_3
changeset 8 3f74d0d4af4c
equal deleted inserted replaced
6:dee5afe5301f 8:3f74d0d4af4c
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the documentation of the Qt Toolkit.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 /*!
       
    43     \page qtmac-as-native.html
       
    44     \title Qt is Mac OS X Native
       
    45     \brief An explanation of Qt's native features on Mac OS X.
       
    46     \ingroup platform-specific
       
    47 
       
    48     This document explains what makes an application native on Mac OS X.
       
    49     It shows the areas where Qt is compliant, and the grey areas where
       
    50     compliance is more questionable. (See also the document 
       
    51     \l{mac-differences.html}{Qt for Mac OS X - Specific Issues}.)
       
    52 
       
    53     Normally when referring to a native Mac application, one really means an
       
    54     application that talks directly to the underlying window system, rather
       
    55     than one that uses some intermediary (for example Apple's X11 server, or a
       
    56     web browser). Qt applications run as first class citizens, just like
       
    57     Cocoa, and Carbon applications. In fact, we use Carbon and HIView
       
    58     internally to communicate with OS X.
       
    59 
       
    60     When an application is running as a first class citizen, it means that
       
    61     it can interact with specific components of the Mac OS X experience:
       
    62 
       
    63     \tableofcontents
       
    64 
       
    65     \section1 The Global Menu Bar
       
    66 
       
    67     Qt does this via the QMenuBar abstraction. Mac users expect to
       
    68     have a menu bar at the top of the screen and Qt honors this.
       
    69 
       
    70     Additionally, users expect certain conventions to be respected, for
       
    71     example the application menu should contain About, Preferences,
       
    72     Quit, etc. Qt handles this automatically, although it does not
       
    73     provide a means of interacting directly with the application menu.
       
    74     (By doing this automatically, Qt makes it easier to port Qt
       
    75     applications to other platforms.)
       
    76 
       
    77     \section1 Aqua
       
    78 
       
    79     This is a critical piece of Mac OS X (documentation can be found at
       
    80     \l{http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html}).
       
    81     It is a huge topic, but the most important guidelines for GUI
       
    82     design are probably these:
       
    83 
       
    84     \list
       
    85     \i \e{Aqua look}
       
    86 
       
    87       As with Cocoa/Carbon, Qt provides widgets that look like those
       
    88       described in the Human Interface Descriptions. Qt's widgets use
       
    89       Appearance Manager on Mac OS X 10.2 and the new HIThemes on Mac OS X 10.3
       
    90       and higher to implement the look, in other words we use Apple's own API's
       
    91       for doing the rendering.
       
    92 
       
    93     \i \e{Aqua feel}
       
    94 
       
    95       This is a bit more subjective, but certainly Qt strives to
       
    96       provide the same feel as any Mac OS X application (and we
       
    97       consider situations where it doesn't achieve this to be bugs).
       
    98       Of course Qt has other concerns to bear in mind, especially
       
    99       remaining cross-platform. Some "baggage" that Qt carries is in
       
   100       an effort to provide a widget on a platform for which an
       
   101       equivelant doesn't exist, or so that a single API can be used to
       
   102       do something, even if the API doesn't make entire sense for a
       
   103       specific widget.
       
   104 
       
   105     \i \e{Aqua guides}
       
   106 
       
   107       This is the most subjective, but there are many suggestions and
       
   108       guidelines in the Aqua style guidelines. This is the area where Qt is
       
   109       of least assistance. The decisions that must be made to conform (widget
       
   110       sizes, widget layouts with respect to other widgets, window margins,
       
   111       placement of OK and Cancel, etc) must be made based on the user
       
   112       experience demanded by your application. If your user base is small or
       
   113       mostly comes from the Windows or Unix worlds, these are minor issues much
       
   114       less important than trying to make a mass market product. Qt for Mac OS X
       
   115       is fully API compatible with Qt for Windows and X11, but Mac OS X is a
       
   116       significantly different platform to Windows and some special
       
   117       considerations must be made based on your audience.
       
   118 
       
   119     \endlist
       
   120 
       
   121     \section1 Dock
       
   122 
       
   123     Interaction with the dock is possible. The icon can be set by calling
       
   124     QWidget::setWindowIcon() on the main window in your application. The
       
   125     setWindowIcon() call can be made as often as necessary, providing an
       
   126     icon that can be easily updated.
       
   127     \omit
       
   128     It is also possible to set a QMenu as the dock menu through the use of the
       
   129     qt_mac_set_dock_menu() function.
       
   130     \endomit
       
   131 
       
   132     \section1 Accessiblity
       
   133 
       
   134     Although many users never use this, some users will only interact with your
       
   135     applications via assistive devices. With Qt the aim is to make this
       
   136     automatic in your application so that it conforms to accepted practice on
       
   137     its platform. Qt uses Apple's accessibility framework to provide access
       
   138     to users with diabilities.
       
   139 
       
   140     \section1 Development Tools
       
   141 
       
   142     Mac OS X developers expect a certain level of interopability
       
   143     between their development toolkit and the platform's developer
       
   144     tools (for example Visual Studio, gmake, etc). Qt supports both Unix
       
   145     style Makefiles, and ProjectBuilder/Xcode project files by using
       
   146     the \l qmake tool. For example:
       
   147 
       
   148     \snippet doc/src/snippets/code/doc_src_qtmac-as-native.qdoc 0
       
   149 
       
   150     will generate an Xcode project file from project.pro. With \l qmake
       
   151     you do not have to worry about rules for Qt's preprocessors (\l moc
       
   152     and \l uic) since \l qmake automatically handles them and ensures that
       
   153     everything necessary is linked into your application.
       
   154 
       
   155     Qt does not entirely interact with the development environment (for
       
   156     example plugins to set a file to "mocable" from within the Xcode
       
   157     user interface). Nokia is actively working on improving Qt's
       
   158     interoperability with various IDEs.
       
   159 */