blob: cbae9a97f4be61c901fab3240fef23d0c477ddca [file] [log] [blame]
Qt 2.2 introduces new features as well as many improvements over the
2.1.x series. This file will only give an overview of the main changes
since version 2.1. A complete list would simply be too large to be
useful. For more detail see the online documentation which is
included in this distribution, and also available on
http://qt.nokia.com/doc/
The Qt version 2.2 series is binary compatible with the 2.1.x and
2.0.x series - applications compiled for 2.0 or 2.1 will continue to
run with 2.2.
As with previous Qt releases, the API and functionality of Qt is
completely portable between Microsoft Windows and X11. It is also
portable between Windows 95, 98, NT and 2000.
****************************************************************************
* Overview *
****************************************************************************
The greatest new feature in the 2.2 release is the Qt Designer, a
visual GUI design tool. It makes it possible to cut down on
development time even further through WYSIWYG dialog design. The
designer makes use of improved runtime flexibility and a revised
property system. Please see $QTDIR/doc/html/designer.html for a
feature overview.
Qt 2.2 integrates now fully on MS-Windows 2000. This includes fade
and scroll effects for popup windows and title bar gradients for MDI
document windows in the MDI module. As with all Qt features, we
provide the same visual effects on Unix/X11.
Two new classes QAction and QActionGroup make it much easier to
create sophisticated main windows for today's applications. A QAction
abstracts a user interface action that can appear both in menus and
tool bars. An action group makes it easier to deal with groups of
actions. It allows to add, remove or activate its children with a
single call and provides "one of many" semantics for toggle
actions. Changing an action's properties, for example using
setEnabled(),setOn() or setText(), immediately shows up in all
representations.
Few people consider the original OSF Motif style the most elegant or
flashy GUI style. Therefore several attempts have been made to come up
with a slightly improved Motif-ish look and feel. One of them is the
thinner CDE style, that was supported by Qt since version 2.0. In the
2.2 release, we now added support for SGI's very own Motif version on
IRIX workstations. With its more elegant bevelling of 3D elements and
mouse-under highlight effects, it is quite appealing. For Linux users,
we added a Motif plus style, that resembles the bevelling used by the
GIMP toolkit (GTK+). Optionally, this style also does hovering
highlight on buttons.
Last but not least we added support for multi-threaded
applications. The classes involved are QThread to start threads,
QMutex to serialize them and QCondition to signal the occurrence of
events between threads ("condition variables").
Another major change was done regarding distribution. In order to
address the steady growth of functionality in the Qt library, we
split the source code into distinct modules that can be compiled
in (or left out) separately. This also makes it possible for us to
keep the cost of entry into the commercial Qt world as low as possible.
The modules available in Qt 2.2 are:
- Tools: platform-independent Non-GUI API for I/O, encodings, containers,
strings, time & date, and regular expressions.
- Kernel: platform-independent GUI API, a complete window-system API.
- Widgets: portable GUI controls.
- Dialogs: ready-made common dialogs for selection of colors, files,
printers, fonts, and basic types, plus a wizard framework, message
boxes and progress indicator.
- OpenGL 3D Graphics: integration of OpenGL with Qt, making it very
easy to use OpenGL rendering in a Qt application.
- Network: advanced socket and server-socket handling plus
asynchronous DNS lookup.
- Canvas: a highly optimized 2D graphic area.
- Table: a flexible and editable table widget
- IconView: a powerful visualization widget similar to QListView and
QListBox. It contains optionally labelled pixmap items that the user
can select, drag around, rename, delete and more.
- XML: a well-formed XML parser with SAX interface plus an
implementation of the DOM Level1
- Workspace: a workspace window that can contain decorated document
windows for Multi Document Interfaces (MDI).
Network, Canvas, Table and XML are entirely new modules.
Below is a list of the major new features in existing classes as well
as short descriptions of all new classes.
****************************************************************************
* New major features in existing classes *
****************************************************************************
QApplication: - "global strut", an adjustable minimum size for interactable
control elements like the entries in a listbox, useful for
touch-screens. Popup window effects ( setEffectEnabled() )
and more threading support ( guiThreadTaken(), lock(),
unlock(), locked() ).
QCheckBox: - "tristate" is now a property.
QClipboard: - text() supports subtypes.
QComboBox: - "editable" is now a property that is changeable at runtime
QDialog: - support for extensible dialogs ("More...") with
setExtension() and setOrientation(). Optional size grip.
QFont: - new functions styleStrategy() and setStyleHint()
QIconSet: - new constructor that takes both a small and a large pixmap
QKeyEvent: - numeric keypad keys now set a Keypad flag
QLabel: - support for scaled pixmap contents, "pixmap" as property
QLayout: - improved flexibility with setEnabled(), access to the
laid out menu bar with menuBar().
QListView: - "showSortIndicator" as property. New function
QListViewItem::moveItem() to simplify drag and drop.
QMovie: - new functions pushSpace(), pushData(), frameImage()
QMultiLineEdit: - new functions pasteSubType() and copyAvailable()
QObject: - new function normalizeSignalSlot(), tr() now supports a comment.
QPicture: - streaming to and from QDataStream
QPopupMenu: - new signal aboutToHide()
QRegExp: - new functions setPattern() and find()
QRegion: - new function setRects()
QScrollView: - new property "staticBackground" to define a pixmap
background that does not scroll with the contents.
QStatusBar: - "sizeGripEnabled" as property
QStyle: - themable menu bars with drawMenuBarItem(). New functions
buttonMargin(), toolBarHandleExtent(), sliderThickness()
QTabWidget: - new functions currentPageIndex(), setCurrentPage(), new
signal currentChanged(). Similar extensions to QTabBar
and QTabDialog
QTranslator: - new algorithmen for faster lookup. No more risk of
"hash collisions" when many translators are loaded.
QVariant: - new subtype QSizePolicy. Necessary for QWidget's
new sizePolicy property.
QWidget: - new properties "sizePolicy", "ownPalette", "ownFont",
"ownCursor" and "hidden". The size policy is now adjustable
at runtime with setSizePolicy(). Added convenience slot
setDisabled(). Fast geometry mapping functions mapTo() and
mapFrom(). On X11, support for a new background mode
X11ParentRelative.
QWizard: - runtime changable titles with setTitle(), new signal
selected()
QWorkspace: - support for more widget flags like WType_Tool. Titlebar
blending effects on MS-Windows 98/2000.
****************************************************************************
* New classes *
****************************************************************************
QAction - Abstracts a user interface action that can appear both in
menus and tool bars. Changing an action's properties, for
example using setEnabled(),setOn() or setText(),
immediately shows up in all representations.
QActionGroup - Combines actions to a group. An action group makes it easier
to deal with groups of actions. It allows to add, remove or
activate its children with a single call and provides
"one of many" semantics for toggle actions.
QDial - A rounded rangecontrol (like a speedometer or
potentiometer). Both API- and UI-wise the dial is very
similar to a QSlider.
QDom - [XML Module] DOM Level 1 Tree
QMotifPlusStyle - This class implements a Motif-ish look and feel with more
sophisticated bevelling as used by the GIMP toolkit (GTK+)
for Unix/X11.
QMutex: - Provides access serialization between threads.
QSemaphore: - A robust integer semaphore. Another way of thread
serialization.
QThread - Baseclass for platform-independent threads.
QWaitCondition - Provides signalling of the occurrence of events between
threads ("condition variables")
QCanvas - [Canvas Module] a highly optimized 2D graphic area.
QTable - [Table Module] a flexible and editable table widget
QXML - [XML Module] XML parser with SAX interface