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