Qt 4.1 introduces many new features as well as many improvements and bugfixes over the 4.0.x series. For more details, see the online documentation which is included in this distribution. The documentation is also available at http://qt.nokia.com/doc/ The Qt version 4.1 series is binary compatible with the 4.0.x series. Applications compiled for 4.0 will continue to run with 4.1. **************************************************************************** * General * **************************************************************************** Qt library ---------- - Introduced widget backing store support, allowing semi-transparent (alpha-blended) child widgets and faster widget painting, as well as solving long-lasting issues with non-rectangular widgets. - Integrated support for rendering Scalable Vector Graphics (SVG) drawings and animations (QtSvg module). - A Portable Document Format (PDF) backend for Qt's printing system. - A unit testing framework for Qt applications and libraries. - Modules for extending Qt Designer and dynamic user interface building. - Additional features for developers using OpenGL, such as support for pixel and sample buffers. - A flexible syntax highlighting class based on the Scribe rich text framework. - Support for network proxy servers using the SOCKS5 protocol. - Support for OLE verbs and MIME data handling in ActiveQt. - Support for universal binaries on Mac OS X. Qt Designer ----------- - Added support for editing menu bars and tool bars. - Added support for adding comments to string properties. - Added new static QtUiTools library with improved QUiLoader API for loading designer forms at run-time. - Added support for namespaces in uic generated code. - Added support for dock widgets in main windows. - Added support for editing table, tree and list widgets. - Improved palette editing and resource support. QTestLib -------- - Added QTestLib, the Qt Unit Testing Library. See the "QTestLib" chapter in the Qt documentation for more information. - Users of older versions of QtTestLib can use the updater utility in tools/qtestlib/updater to convert existing autotests to work with QTestLib. Boost ----- Added boost compatible syntax for declaring signals and slots. If you define the macro QT_NO_KEYWORDS, "Q_SIGNALS" and "Q_SLOTS" are recognized as keywords instead of the default "signals" and "slots". Added a new keyword to qmake to enable this macro: CONFIG += no_keywords. ActiveQt -------- QAxServer now supports mime-type handling - a ActiveX control can be registered to handle a certain file extension and mime-type, in which case QAxBindable::load and QAxBindable::save can be reimplemented to serialize the object. Build system ------------ Added support for linking static plugins into the application. Qt 3 to 4 Porting Tool ---------------------- Q(V|H)BoxLayout and QGridLayout usage is now ported to use Q3(V|H)BoxLayout/Q3GridLayout, to retain the margin/spacing behavior as in Qt 3. Meta Object Compiler (moc) -------------------------- - Added support for const signals. Qt Assistant ------------ - Added -docPath command line option for easy setting of the document root path. QMake ----- - Added support for new FORMS3 profile variable to make it possible to have Qt Designer forms from Qt 3 and Qt 4 in the same project. - Added support for precompiled headers on win32-g++ (MinGW) Compilers --------- Added support for Solaris 10 on AMD64 with the compiler provided by Sun. **************************************************************************** * Library * **************************************************************************** New classes ----------- - QTreeWidgetItemIterator Added iterator to help iterating over items in a QTreeWidget. - QStringFilterModel Allows you to provide a subset of a model to a view based on a regular expression. - QSyntaxHighlighter The QSyntaxHighlighter class allows you to define syntax highlighting rules. - QAbstractFileEngine A base class for implementing your own file and directory handling back-end for QFile, QFileInfo and QDir. - QAbstractFileEngineHandler For registering a QAbstractFileEngine subclass with Qt. - QFSFileEngine The default file engine for regular file and directory access in Qt. - Q3(H|V)BoxLayout and Q3GridLayout Layout classes provided for compatibility that behave the same as the Qt 4 classes but use a zero margin/spacing by default, just like in Qt 3. - Added qFromLittleEndian, qToLittleEndian, qFromBigEndian and qToBigEndian endian helper conversion functions (qendian.h) - Q_EXPORT_PLUGIN2 macro Obsoletes Q_EXPORT_PLUGIN and allows static linking of plugins. - Q3ComboBox For enhanced backwards compatibility with Qt 3. - QGLPbuffer For creating and managing OpenGL pixel buffers. - QNetworkProxy For setting up transparent (SOCKS5) networking proxying. - QDirectPainter (Qtopia Core only) Provides direct access to video framebuffer hardware. General improvements -------------------- - QByteArray Added toLong() and - QColorDialog Fix shortcut and focus for "Alpha channel" spinbox. - QLinkedList Added conversion methods to convert from/to STL lists. - QMap/QHash Fixed operator>>() to read back multiple values associated to a same key correctly. Added constFind(), for finding an item without causing a detach. - QMap/QHash Const-correctness in const_iterator's operator--(int). - QMainWindow The saveState() and restoreState() functions no longer fallback to using the windowTitle property when the objectName property is not set on a QToolBar or QDockWidget; this behavior was undocumented and has been removed. - QToolBar Added Qt 3 compatibility signal visibilityChanged(bool). - QMetaType Class is now fully reentrant. Metatypes can be registered or queried from multiple threads. Added qMetaTypeId(), which returns the meta type ID of T at compile time. - QMetaProperty Added isResettable(). - QSql Oracle plugin adds support for authentication using external credentials. Added isValid() to QSqlError. - QThread Added setPriority() and priority(), for querying and setting the priority of a thread. - QTreeWidgetItem/QTreeWidget Added new constructors and addChildren(), insertChildren(), takeChildren(), insertTopLevelItems(), addTopLevelItems to speed up insertion of multiple items. - QTextDocument Added the class QTextBlockUserData and added the possibility of storing a state or custom user data in a QTextBlock Added useDesignMetrics property, to enable the use of design metrics for all fonts in a QTextDocument. - QTextFormat Added support for setting the font pixel size. Added UserObject to QTextFormat::ObjectTypes enum. - QMetaType The value of QMetaTypeId::Defined indicates whether a given type T is supported by QMetaType. - QAbstractItemView Added setIndexWidget() and indexWidget() which makes it possible to set a widget at a given index. Added a QAbstractItemView::ContiguousSelection mode. Added scrollToTop() and scrollToBottom(). Changed signals pressed(), clicked() and doubleClicked() to only emit when the index is valid. - QAbstractItemModel Added a SizeHintRole that can be set for each item. The item delegate will now check for this value before computing the size hint based on other item data. Add QModelIndex::operator<() so we are able to use them in QMap and other containers. Added qHash function for QModelIndex. - QTableWidget Added cellWidget() and setCellWidget() which makes it possible to set a widget at a specified cell. Added setCurrentCell(). Added QTableWidgetItem copy constructors. - QTreeWidget Added setItemWidget() and itemWidget() which makes it possible to set a widget on an item. - QListWidget Added setItemWidget() and itemWidget() which makes it possible to set a widget on an item. Added QListWidgetItem copy constructors. - QMutableMapIterator Added value() overloads to Java-style iterators that return non-const references. - QTextTable Added mergeCells() and splitCells() to be able to set the row or column span on a table cell. - QStyle Added standardIcon() which returns a default icon for standard operations. Added State_ReadOnly, which is enabled for read-only widgets. Renamed QStyleOption::init() to initFrom(). - QGroupBox is now completely stylable (QStyleOptionGroupBox). - QToolBar is now stylable according to its position in the toolbar dock area (QStyleOptionToolBar). - Indeterminate (busy) progress bars are now animated properly in all styles. - By popular request, the default toolbar icon size (PM_ToolBarIconSize) in Windows and Plastique styles has been changed to 24 x 24 (instead of 16 x 16 in Windows and 32 x 32 in Plastique). Added PM_DockWidgetTitleMargin as pixel metric. - QHash Make it possible to use QHash with a type that has no default constructor. - QTableView Made QTableView::setShowGrid() a slot, like in Qt 3. Added setRowHeight() and setColumnWidth(). - QTableWidgetSelectionRange Added rowCount() and columnCount() convenience functions. - QSettings Added support for custom formats in QSettings. - QTextStream Added status(), setStatus() and resetStatus() for improved error handling. Added read(qint64 maxlen), for reading parts of a text stream into a QString. - QTextCursor Added support for BlockUnderCursor selection type. - QHeaderView Added defaultSectionSize property which tells the default size of the header sections before resizing. - QScrollBar Added context menu to the scrollbar with default navigation options. - QScrollArea Added ensureVisible(), which can scroll the scrollarea to make sure a specific point is visible. - QDateTime Added addMSecs(), which adds a number of milliseconds to the QDateTime. - QDateTimeEdit Added support for more date/time formats. Now allows multiple sections of the same type. - QButtonGroup Added handling of buttons with IDs to the buttongroup like in Qt 3. - QIODevice Added peek() for peeking data from a device. - QTextEdit Added property tabStopWidth which sets the tab stop width in pixels. append(const QString &) is now a public slot. Added support for inserting Unicode control characters through the context menu. Added property acceptRichText, for whether or not the text edit accepts rich text insertions by the user. Added overwriteMode property. - QDataStream Added skipRawData(). Added support for QRegExp. - QProgressBar Added support for vertical progress bars. - QImageIOHandler The name() function has been obsoleted; use format() instead. Added QImageIOHandler::Animation, for determining if the image format supports animation. Added QImageIOHandler::BackgroundColor, for setting the background color for the image loader. - QImageReader Added setBackgroundColor() and backgroundColor(), for setting the background color of an image before it is read. Added supportsAnimation(), for checking if the image format supports animation. - QImageWriter Added support for saving image text. - QLocale Added dateFormat()/timeFormat() to query the date/time format for the current locale. Added toString() overloads for localized QTime and QDate output. Added decimalPoint(), groupSeparator(), percent(), zeroDigit(), negativeSign() and exponential(), which provide a means to generate custom number formatting. - QHostInfo Added support for reverse name lookups. - QHostAddress Added a QString assignment operator Added convenience functions for initializing from a native sockaddr structure. Added support for the IPv6 scope-id. - QPrinter Added property "embedFonts" for embedding fonts into the target document. Added support for printing to PDF. Added support for custom print and paint engines - QPrintEngine Added PPK_SuppressSystemPrintStatus, for suppressing the printer progress dialog on Mac OS X. - QKeySequence Added fromString() and toString() for initializing a key sequence from, and exporting a key sequence to a QString. - QUrl Added the port(int) function, which provides a default value for the port if the URL does not define a port. Support for decoding Punycode encoded hostnames in URLs. Made the parser more tolerant for mistakes, and added a ParsingMode flag for selecting strict or tolerant parsing. Added support for the NAMEPREP standard in our i18n domain name support. - QDir Added the filter QDir::NoDotAndDotDot, for the special directories "." and "..". Added the filter QDir::AllEntries, for all entries in a directory, including symlinks. - QAbstractSocket Added slots connectToHostImplementation() and disconnectFromHostImplementation() to provide polymorphic behavior for connectToHost() and disconnectFromHost(). - QMenuBar Added setActiveAction(), which makes the provided action active. - QProxyModel This class has been obsoleted (see QAbstractProxyModel) - QWidget Now supports three modes of modality: NonModal, WindowModal and ApplicationModal. Added Qt::WindowModality, obsoleted WA_ShowModal and WA_GroupLeader. Added Qt::WA_OpaquePaintEvent widget attribute, obsoleting Qt::WA_NoBackground. Added boolean autoFillBackground property. Child widgets now always inherit the contents of their parent. - QPalette Added QPalette::Window (obsoletes Background) and QPalette::WindowText (obsoletes Foreground). - QHttpResponseHeader Added two constructors and the function setStatusLine() for generating a response header. - QBitArray Added count(bool), for counting on and off-bits in a bit array. - QVariant Added support for QRegExp - QRegExpValidator Added the property "regExp". - QTabBar Added the property "iconSize", for setting the size of the icons on the tabs. - QLineEdit Added support for inserting Unicode control characters through the context menu. - QString Added toLong() and toULong(). Support for std::string conversions with embedded \0 characters. - QRegion Added translate(), like QRect::translated(). - QProcess Added systemEnvironment(), which returns the environment variables of the calling process. Added exitStatus(), and added a new finished() signal which takes the exit status as a parameter. - QComboBox Made setCurrentIndex() a slot. - QFontDataBase Added styleString(), for retrieving the style string from a QFontInfo. Added support for Myanmar fonts. - QFontMetrics Added xHeight(), which returns the 'X' height of the font. - QCoreApplication Added arguments(), which returns a list of command line arguments as a QStringList. - QTcpSocket Added support for SOCKS5 via setProxy(). - QUdpSocket Added property "bindMode", for binding several sockets to the same address and port. - QPen Added support for custom dash pattern styles and miter limits. Added support for QDebug. - QDebug Added support for QVector and QPair output. - QStringListModel Added support for sorting. - QOpenGLPaintEngine Gradients in the OpenGL paint engine are now drawn using fragment programs, if the extension is available. Lots of fixes, speedups and tweaks. Platform-Specific changes ------------------------- Windows: - Painting Added support for ClearType text rendering. - File Engine Added support for long filenames/paths. X11: - QWidget Added support for freedesktop.org startup notifications. Mac OS X: - Added support for universal binaries - Improved support for the VoiceOver accessibility tool in Mac OS X 10.4 and later 3rd-party libraries ------------------- - zlib Upgraded to zlib 1.2.3. - FreeType Upgraded to FreeType 2.1.10. - SQLite Upgraded to SQLite 3.2.7