Initial import from the monolithic Qt.
[profile/ivi/qtbase.git] / dist / changes-2.1.0
1 Qt 2.1 introduces new features as well as many improvements over the
2 2.0.x series. This file will only give an overview of the main changes
3 since version 2.0.2.  A complete list would simply be too large to be
4 useful.  For more detail see the online documentation which is included
5 in this distribution, and also available on
6 http://qt.nokia.com/doc/
7
8 The Qt version 2.1 series is binary compatible with the 2.0.x
9 series - applications compiled for 2.0 will continue to run with 2.1.
10
11 As with previous Qt releases, the API and functionality of Qt is
12 completely portable between Microsoft Windows and X11.  It is also portable
13 between Windows 95, 98 and NT; unlike most toolkits, Qt lets a single
14 executable work on all three.
15
16 ****************************************************************************
17 *                           Overview                                       *
18 ****************************************************************************
19
20 As usual, large sections of the documentation have been revised and
21 lots of new documentation has been added.
22
23 Much work went into existing classes, based on all the feedback we got
24 from our users. A warm thank you to you all at this point, we honestly
25 hope to satisfy most of your wishes with the new release.
26
27 Among the things that got a lot of polishing is the new geometry
28 management system that was introduced with the 2.x series. Some
29 classes, such as QBoxLayout, have been rewritten and many size hints
30 and size policies were optimized. As usual with newly introduced
31 systems, the occasional bug has been fixed as well. As a result,
32 layout in Qt-2.1 is not only nicer but also faster.
33
34 Big parts of the file dialog have been rewritten. It is now
35 synchronized in terms of features with the common Windows dialog,
36 including fancy drag'n'drop and in-place renaming. You can customize
37 both parts of the dialog, the front-end with info and preview widgets,
38 the back-end with different network protocols (see the QFileDialog and
39 QNetworkProtocol documentation for details).
40
41 Especially interesting for dynamic Qt applications is the newly
42 introduced property system. Many interesting things, from scripting up
43 to graphical user interface builders, become easier. The technology
44 requires a new macro Q_PROPERTY and a new revision of Qt's meta object
45 compiler (moc). See the Qt documentation for details.
46
47 Due to strong customer demand, we added a cross-platform way to easily
48 implement multi-document interfaces (known as 'MDI'). The widget is
49 called QWorkspace and makes this task trivial.
50
51 On X11, text dropping from Motif drag'n'drop applications has been
52 added, to make your Qt applications inter-operable with those Motif
53 applications that survived Y2K.
54
55 The rich text system, first introduced in Qt-2.0, has been
56 revised. Apart from great speed improvements, it now supports HTML
57 tables as well as floating images.
58
59 QMultiLineEdit, the text input field in Qt, got the missing word wrap
60 functionality. It's probably the last big extension we will add to
61 that widget. In Qt 3.0, it will be replaced by a fancier, faster and
62 more powerful QTextEdit widget that also deals with different colors
63 and fonts in a way similar to the existing QTextView.
64
65 Qt follows the respective GUI style guides even more closely. This
66 includes honoring desktop settings, and keyboard shortcuts such as
67 Ctrl-Z/Y for undo/redo in line edit and multi-line edit
68 controls. Dialog handling for both modal and non-modal dialogs has
69 been improved to follow the platform conventions precisely.
70
71 With QIconView, we added a powerful new visualization widget similar
72 to QListView and QListBox. It contains optinally labelled pixmap items
73 that the user can select, drag around, rename, delete and more.
74
75 Compared to the previous release, we have managed to reduce overall
76 memory consumption while improving execution speed and features.
77
78 Below is a list of the major new features in existing classes as well
79 as short descriptions of all new classes and the changes in some of
80 the extensions shipped with Qt.
81
82
83 ****************************************************************************
84 *               New major features in existing classes                     *
85 ****************************************************************************
86
87 QApplication    - new function wakeUpGuiThread() to simplify using threads
88                   with Qt.
89
90 QArray          - added sorting and binary search.
91
92 QColor          - custom color support added.  qRgb(r,g,b) helper function
93                   now sets an opaque alpha value instead of a transparent
94                   one.
95
96 QComboBox       - support for text items with icons.
97
98 QFileDialog     - many new features including fancy drag'n'drop
99                   and in-place renaming.
100                   Methods like setInfoPreviewWidget()and
101                   setContentsPreviewWidget() make it easy to customize
102                   the dialog extensively. With QUrlOperator and the
103                   QNetworkProtocol abstraction, the dialog can operate
104                   transparently by various different network protocols,
105                   such as HTTP and FTP (see the Network Extension).
106
107 QFocusEvent     - carries a reason() for the event. Possible reasons are
108                   Mouse, Tab, ActiveWindow, ShortCut and other. The
109                   addition makes line edit controls behave properly.
110
111 QHeader         - added optional visual sort indicator. Revisited API that 
112                   operates on sections only (solves the 'logical' vs. 'actual' 
113                   index confusion). A reworked 'table' example shows how
114                   to use QHeader in combination with a scrollview to create
115                   a simple spreadsheet.
116
117 QListBox        - many signals and functions added for convenience and
118                   greater flexibility.
119
120 QListView       - various selections modes similar to QListBox, many
121                   new functions and signals added for convenience and
122                   greater flexibility.
123
124 QMainWindow     - implemented draggable and hidable toolbars. A menubar
125                   can be made draggable by simply putting it in a toolbar.
126
127 QMetaObject     - Parts of the API made public. The meta object allows
128                   applications to access information about an object's
129                   properties as well as its signals and slots.
130
131 QMultiLineEdit  - added different word wrap modes: WidgetWidth,
132                   FixedPixelWidth and FixedColumnWidth.
133
134 QObject         - property access functions property() and setProperty().
135
136 QPen            - added adjustable cap and join styles.
137
138 QPopupMenu      - added support for tear-off menus, custom items
139                   and widget items.
140                   A new function setItemParameter() makes it possible
141                   to distinguish between several menu items connected to
142                   one single slot.
143
144 QPrinter        - Now allows printing to the default printer without doing
145                   setup() first.
146
147 QProgressDialog - auto-reset and auto-close modes.
148
149 QPushButton     - added a menu button mode with setPopup().
150
151 QScrollView     - support for auto-scrolling on drag move events (drag
152                   auto scroll mode).
153
154 QSignal         - optional additional integer parameter for the emitted
155                   signal.
156
157 QSimpleRichText - added adjustSize() function that implements a clever
158                   size hint. Vertical break support for printing. inText()
159                   hit test.
160
161 QSpinBox        - different button symbols, currently UpDownArrows and
162                   PlusMinus.
163
164 QSplitter       - supports three resize modes now, Stretch, KeepSize
165                   and FollowSizeHint.
166
167 QString         - new functions setUnicode(), setUnicodeCodes(), setLatin1(),
168                   startsWith() and endsWith()
169
170 QStringList     - new functions fromStrList(), split(), join() and grep().
171
172 QStyle          - some extensions for menu button indicators, default
173                   button indicators, variable scrollbar extends and toolbar
174                   handles.
175
176 QStyleSheet     - a couple of tags added to the default sheet, such as
177                   U, NOBR, HEAD, DL, DT, DD and table support (TABLE, TR,
178                   TD, TH). Many attributes added to existing tags.
179
180 QTextView       - basic table support. Contents is selectable, selections
181                   can be pasted/dragged into other widgets.
182
183 QToolBar        - stretchable depending on the orientation (setHorizontalStretchable()
184                   and setVerticalStretchable(). Added orientationChanged() signal.
185
186 QToolButton     - added optional delayed menu with setPopup() and
187                   setPopupDelay(). Auto-raise behaviour adjustable.
188
189 QWidget         - new widget flag WStyle_ContextHelp that adds a
190                   context-help button to the window titlebar. The
191                   button triggers "What's This?"-help. The flag works
192                   with MS-Windows and future versions of X11 desktops
193                   such as KDE-2.0.
194
195                 - New function showFullScreen().
196
197                 - Enabling and disabling with setEnabled() propagates to
198                   children.
199
200                 - Changed isVisible(). It now returns whether a widget
201                   is mapped up to the toplevel widget (the previous
202                   implementation only returned isVisibleTo(parentWidget()).
203
204                 - New property 'backgroundOrigin' that lets a widget draw 
205                   its background relatively to its parent widget's coordinate
206                   system. This makes pseudo-transparency possible, without
207                   the overhead of a real widget mask.
208
209
210 ****************************************************************************
211 *                               New clases                                 *
212 ****************************************************************************
213
214 QCustomMenuItem - an abstract base class for custom menu items in
215                   popup menus.
216
217 QFontDataBase   - provides information about the available fonts. Not really
218                   a new class (it was used internally for the QFontDialog),
219                   but for the first time public API.
220
221 QGuardedPtr     - a template class that provides guarded pointers to
222                   QObjects.
223
224 QIconView       - a sophisticated new widget similar to QListView and
225                   QListBox.  An iconview contains optinally labelled pixmap
226                   items that the user can select, drag around, rename, delete
227                   and more. The widget is highly optimized for speed and
228                   large amounts of icons.
229
230 QInputDialog    - a convenience dialog to get some simple input values from
231                   the user.
232
233 QMetaProperty   - stores meta data about properties. Part of the meta
234                   object system.
235
236 QNetworkProtocol- base class for network protocols, provides
237                   a common API for network protocols.
238
239 QUrl/
240 QUrlOperator    - provides an easy way to work with URLs.
241
242 QVariant        - a tagged union for the most common Qt data types.
243
244 QValueStack     - a value-based stack container.
245
246 QWorkspace      - provides a workspace that can contain decorated
247                   windows as opposed to frameless child widgets.
248                   QWorkspace makes it easy to implement a multi-document
249                   interface (MDI).
250
251 QBig5Codec      - provides support for the Big5 Chinese encoding.
252
253
254 ****************************************************************************
255 *               Changes which may affect runtime behaviour                 *
256 ****************************************************************************
257
258 QDataStream / QPicture
259  To accomodate for improved functionality, the stream serialization format
260  of QString and QPen has changed in Qt 2.1. The format version
261  number has been increased to 3. Compatibility has been kept, so
262  applications built with this version of Qt are automatically able to read
263  QDataStream and QPicture data generated by earlier Qt 2.x versions. But if
264  your application needs to generate data that must be readable by
265  applications that are compiled with earlier versions of Qt, you must use
266  QDataStream::setVersion() (if the data contains QString or QPen objects).
267  See the documentation of this function for further discussion.
268
269 QPainter::drawPolygon()
270  An outline is no longer drawn in the brush color if NoPen is specified.
271  This matches the behaviour on Windows and ensures that the area
272  painted in this case is the same pixels defined by a QRegion made
273  from the polygon.  To get the old behaviour, you can call
274  painter.setPen(painter.brush()) prior to painting, which will also
275  work on Windows.
276
277 QPushButton::sizeHint()
278  The size hint of auto-default push buttons has been slightly
279  increased in order to reserve space for a default button indicator
280  frame. This is necessary for a proper Motif or Platinum emulation. If
281  this change destroys your geometry management, a auto-default button
282  is probably not what you wanted anyway. Simply call
283  setAutoDefault(FALSE) on these push buttons to get the old behaviour.
284
285 QWidget
286  Font and palette propagation has changed totally (from "almost
287  brain-dead" to working).  In practice, the only changes we've seen are
288  to the better.
289
290 QColor
291  qRgb(r,g,b) now sets a default opaque alpha value of 0xff instead of
292  a transparent 0x00 alpha value formerly.  Use qRgb(r,g,b,a) if you do
293  need a transparent alpha value.
294
295 QPalette
296  It turned out that the old normal/active/disabled set of color groups
297  didn't work very well, except in the simplest hello-world examples,
298  that it couldn't be fixed without nasty hacks, and that during five
299  years nobody had discovered the bugs.  So, we've dropped our broken
300  attempt at Tcl/Tk L&F compatibility, and added support for Windows
301  2000 and Macintosh L&F compatibility instead.  The Macintosh and
302  Windows 2000 looks differentiate between the window with focus and
303  other windows.  Qt calls the color groups QPalette::active() and
304  QPalette::inactive() respectively.
305
306 QGridLayout/QBoxLayout 
307  setMargin() now also works on child layouts. As a result of this
308  change, the geometry() of a layout now includes margin(). This may
309  effect programs that use QLayout::geometry().
310
311 QToolButton
312  The now adjustable auto-raise behaviour defaults to TRUE only when
313  a button is used inside a QToolBar. That's usually what you want. If not,
314  call setAutoRaise(FALSE).