source: trunk/doc/src/platforms/qtmac-as-native.qdoc@ 651

Last change on this file since 651 was 651, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.2 sources.

  • Property svn:eol-style set to native
File size: 7.2 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the documentation of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
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** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
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*/
Note: See TracBrowser for help on using the repository browser.