summaryrefslogtreecommitdiffstats
path: root/doc/src/platforms/qtmac-as-native.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/platforms/qtmac-as-native.qdoc')
-rw-r--r--doc/src/platforms/qtmac-as-native.qdoc202
1 files changed, 202 insertions, 0 deletions
diff --git a/doc/src/platforms/qtmac-as-native.qdoc b/doc/src/platforms/qtmac-as-native.qdoc
new file mode 100644
index 0000000..97b4c57
--- /dev/null
+++ b/doc/src/platforms/qtmac-as-native.qdoc
@@ -0,0 +1,202 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/****************************************************************************
+**
+** Qt for Mac OS X documentation
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+**********************************************************************/
+
+/*!
+ \page qtmac-as-native.html
+ \title Qt is Mac OS X Native
+ \brief An explanation of Qt's native features on Mac OS X.
+ \ingroup platform-specific
+
+ This document explains what makes an application native on Mac OS X.
+ It shows the areas where Qt is compliant, and the grey areas where
+ compliance is more questionable. (See also the document
+ \l{mac-differences.html}{Qt for Mac OS X - Specific Issues}.)
+
+ Normally when referring to a native Mac application, one really means an
+ application that talks directly to the underlying window system, rather
+ than one that uses some intermediary (for example Apple's X11 server, or a
+ web browser). Qt applications run as first class citizens, just like
+ Cocoa, and Carbon applications. In fact, we use Carbon and HIView
+ internally to communicate with OS X.
+
+ When an application is running as a first class citizen, it means that
+ it can interact with specific components of the Mac OS X experience:
+
+ \tableofcontents
+
+ \section1 The Global Menu Bar
+
+ Qt does this via the QMenuBar abstraction. Mac users expect to
+ have a menu bar at the top of the screen and Qt honors this.
+
+ Additionally, users expect certain conventions to be respected, for
+ example the application menu should contain About, Preferences,
+ Quit, etc. Qt handles this automatically, although it does not
+ provide a means of interacting directly with the application menu.
+ (By doing this automatically, Qt makes it easier to port Qt
+ applications to other platforms.)
+
+ \section1 Aqua
+
+ This is a critical piece of Mac OS X (documentation can be found at
+ \l{http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html}).
+ It is a huge topic, but the most important guidelines for GUI
+ design are probably these:
+
+ \list
+ \i \e{Aqua look}
+
+ As with Cocoa/Carbon, Qt provides widgets that look like those
+ described in the Human Interface Descriptions. Qt's widgets use
+ Appearance Manager on Mac OS X 10.2 and the new HIThemes on Mac OS X 10.3
+ and higher to implement the look, in other words we use Apple's own API's
+ for doing the rendering.
+
+ \i \e{Aqua feel}
+
+ This is a bit more subjective, but certainly Qt strives to
+ provide the same feel as any Mac OS X application (and we
+ consider situations where it doesn't achieve this to be bugs).
+ Of course Qt has other concerns to bear in mind, especially
+ remaining cross-platform. Some "baggage" that Qt carries is in
+ an effort to provide a widget on a platform for which an
+ equivelant doesn't exist, or so that a single API can be used to
+ do something, even if the API doesn't make entire sense for a
+ specific widget.
+
+ \i \e{Aqua guides}
+
+ This is the most subjective, but there are many suggestions and
+ guidelines in the Aqua style guidelines. This is the area where Qt is
+ of least assistance. The decisions that must be made to conform (widget
+ sizes, widget layouts with respect to other widgets, window margins,
+ placement of OK and Cancel, etc) must be made based on the user
+ experience demanded by your application. If your user base is small or
+ mostly comes from the Windows or Unix worlds, these are minor issues much
+ less important than trying to make a mass market product. Qt for Mac OS X
+ is fully API compatible with Qt for Windows and X11, but Mac OS X is a
+ significantly different platform to Windows and some special
+ considerations must be made based on your audience.
+
+ \endlist
+
+ \section1 Dock
+
+ Interaction with the dock is possible. The icon can be set by calling
+ QWidget::setWindowIcon() on the main window in your application. The
+ setWindowIcon() call can be made as often as necessary, providing an
+ icon that can be easily updated.
+ \omit
+ It is also possible to set a QMenu as the dock menu through the use of the
+ qt_mac_set_dock_menu() function.
+ \endomit
+
+ \section1 Accessiblity
+
+ Although many users never use this, some users will only interact with your
+ applications via assistive devices. With Qt the aim is to make this
+ automatic in your application so that it conforms to accepted practice on
+ its platform. Qt uses Apple's accessibility framework to provide access
+ to users with diabilities.
+
+ \section1 Development Tools
+
+ Mac OS X developers expect a certain level of interopability
+ between their development toolkit and the platform's developer
+ tools (for example Visual Studio, gmake, etc). Qt supports both Unix
+ style Makefiles, and ProjectBuilder/Xcode project files by using
+ the \l qmake tool. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtmac-as-native.qdoc 0
+
+ will generate an Xcode project file from project.pro. With \l qmake
+ you do not have to worry about rules for Qt's preprocessors (\l moc
+ and \l uic) since \l qmake automatically handles them and ensures that
+ everything necessary is linked into your application.
+
+ Qt does not entirely interact with the development environment (for
+ example plugins to set a file to "mocable" from within the Xcode
+ user interface). Nokia is actively working on improving Qt's
+ interoperability with various IDEs.
+*/