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

Last change on this file since 342 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

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