| Qt 3.1 introduces many significant new features and many improvements |
| over the 3.0.x series. This file provides an overview of the main |
| changes since version 3.0.5. For further details see the online |
| documentation which is included in this distribution, and also |
| available at http://qt.nokia.com/doc/. |
| |
| The Qt version 3.1 series is binary compatible with the 3.0.x series: |
| applications compiled for 3.0 will continue to run with 3.1. |
| |
| |
| **************************************************************************** |
| * General * |
| **************************************************************************** |
| |
| Qt Script for Applications |
| -------------------------- |
| Qt 3.1 is the first Qt release that can be used with Qt Script for |
| Applications (QSA). QSA provides a scripting engine, an IDE for |
| creating and editing scripts and script forms, and bindings to the Qt |
| API. Script-enabling a Qt application is not difficult and the IDE |
| makes it easy for resellers and end-users to write their own scripts. |
| QSA is due for release after Qt 3.1. |
| |
| |
| Qt Designer |
| ----------- |
| Qt Designer, the visual GUI builder, has undergone several usability |
| improvements. A new dialog for creating and editing signals and slots |
| connections has been created: it is much easier to use and much faster |
| for setting up multiple connections. The widgets are now presented in |
| an easy-to-use toolbox rather than in toolbars (although you can still |
| have the toolbars if you want). The property editor now handles common |
| properties in multiple widgets simultaneously. By popular demand, |
| WYSIWYG support for QWidgetStack has been added. Rich text is now |
| supported with a rich text editor. And the code editor can be used for |
| ordinary member functions as well as for slots. |
| |
| |
| Qt Assistant |
| ------------ |
| Qt Assistant, the Qt documentation browser, can now be used with |
| custom documentation sets. This new functionality combined with the |
| new QAssistantClient class means that you can use Qt Assistant as a |
| help browser for your own applications. Qt Assistant has also been |
| enhanced by the addition of a fast full text search engine. |
| |
| |
| Motif |
| ----- |
| The general industry-wide move away from Motif is leaving more and |
| more companies in need of a migration solution. But converting large |
| legacy applications in one step is often impractical. To minimize |
| risks and to manage the workload companies often want to port code on |
| a module by module basis. Qt 3.1 includeds a completely new Motif |
| module that supports hybrid applications in which Qt code and Motif |
| code coexist. (This obsoletes the earlier rudimentary Qt Xt/Motif |
| extension.) |
| |
| |
| ActiveX |
| ------- |
| With the release of Qt 3.1, customers who use Qt for Microsoft Windows |
| development can now use Qt with ActiveX. The new ActiveQt module |
| provides a simple API for COM and ActiveX. The module can be used to |
| create applications which host ActiveX controls, and also to create |
| applications that serve ActiveX controls (e.g. Internet Explorer |
| plugins). |
| |
| |
| Qt/Mac |
| ------ |
| The introduction of Qt/Mac, a Mac OS X port of Qt, with Qt 3.0 has |
| proved a great success. This port has undergone many improvements in |
| Qt 3.1, especially with respect to Appearance Manager, anti-aliased |
| text and user settings. The Qt OpenGL support is greatly improved, and |
| uses the hardware-accelerated drivers. |
| |
| |
| Qt/Embedded |
| ----------- |
| Graphics, mouse and keyboard drivers can now be compiled as plugins. |
| |
| |
| Qt library |
| ---------- |
| In addition to the new additions and enhancements referred to above, |
| as with all major Qt releases, Qt 3.1 includes hundreds of |
| improvements in the existing class library. Here is a brief summary of |
| the most significant changes: |
| |
| - QTextEdit has a new text format: LogText. This is a performance and |
| memory optimized format especially designed for the fast display of |
| large amounts of text. The format supports basic highlighting, |
| including bold and colored text. |
| |
| - The new QSyntaxHighlighter class makes it both easy and efficient to |
| add syntax highlighting capabilities to a QTextEdit. |
| |
| - QHttp and QFtp in earlier Qt's were implementations of the |
| QNetworkProtocol. Both have been extended to stand in their own |
| right. If you missed some flexibility in the network protocol |
| abstractions of earlier Qt's, the new QHttp and QFtp classes should |
| provide the solution. |
| |
| - QAccel, used to handle keyboard shortcuts, now gracefully copes with |
| shortcut clashes. If a clash occurs, a new signal, |
| activatedAmbiguously(), is emitted. Classes that use QAccel, like |
| QButton and QPopupMenu, make use of this new functionality. |
| Futhermore QAccel can now handle multi-key sequences, for example, |
| Ctrl+X,Ctrl+F. |
| |
| - QClipboard has been extended to simplify data exchange between |
| programs. |
| |
| - Thread support: almost all methods in the tools classes have been |
| made reentrant. QApplication::postEvent() and a few other methods |
| are now thread-safe if Qt is compiled as a multi-threaded library. |
| (The documentation now states if a class or function is thread-safe |
| or reentrant.) |
| |
| - A QMutexLocker class has been added to simplify the locking and |
| unlocking of mutexes. |
| |
| - Input methods: A selectionLength() function has been added to |
| QIMEvent. Japanese compositions are now handled correctly. Support |
| for AIMM based input methods (those working on non-Asian versions of |
| Win95/98/Me) has been added. |
| |
| - Large File support: Qt's internals have been modified to support |
| Large Files (> 2GB). QFileDialog will now correctly display and |
| select Large Files. |
| |
| - SQL module: Support for prepared query execution and value binding |
| has been added. Among other benefits, this makes it possible to |
| write large BLOBs (> 2 KB) to Oracle databases, and to write Unicode |
| strings to SQL Server databases. |
| |
| |
| Build process |
| ------------- |
| The build process has been improved: |
| |
| - The configure script does not need QTDIR to be set anymore. |
| |
| |
| **************************************************************************** |
| * Library * |
| **************************************************************************** |
| |
| New classes |
| ================== |
| |
| - QBackInsertIterator |
| - QEventLoop |
| - QIconFactory |
| - QMutexLocker |
| - QSyntaxHighlighter |
| |
| |
| QAction |
| ------------------ |
| New functions: |
| void setVisible( bool ) |
| bool isVisible() const |
| |
| |
| QCanvas |
| ------------------ |
| New functions: |
| void invalidate() |
| bool isValid() const |
| |
| |
| QColorDialog |
| ------------------ |
| New functions: |
| static void setStandardColor( int, QRgb ) |
| |
| |
| QAccel |
| ------------------ |
| New signals: |
| void activatedAmbiguously( int id ) |
| |
| |
| QApplication |
| ------------------ |
| The event loop has been moved to the QEventLoop class, making it |
| easier to integrate other toolkits with Qt. |
| |
| New functions: |
| QEventLoop *eventLoop() const |
| void setEventLoop( QEventLoop * ) |
| QString sessionKey() const |
| |
| |
| QClipboard |
| ------------------ |
| New functions: |
| void clear( Mode mode ) |
| bool supportsSelection() const |
| bool ownsSelection() const |
| bool ownsClipboard() const |
| QString text( Mode mode ) const |
| QString text( QCString& subtype, Mode mode ) const |
| void setText( const QString &, Mode mode ) |
| QMimeSource *data( Mode mode ) const |
| void setData( QMimeSource*, Mode mode ) |
| QImage image( Mode mode ) const |
| QPixmap pixmap( Mode mode ) const |
| void setImage( const QImage &, Mode mode ) |
| void setPixmap( const QPixmap &, Mode mode ) |
| |
| |
| QDesktopWidget |
| ------------------ |
| New functions: |
| const QRect& screenGeometry( QWidget *widget ) const |
| const QRect& screenGeometry( const QPoint &point ) const |
| const QRect& availableGeometry( int screen ) const |
| const QRect& availableGeometry( QWidget *widget ) const |
| const QRect& availableGeometry( const QPoint &point ) const |
| |
| |
| QFileDialog |
| ------------------ |
| Large Files (> 2GB) are now correctly displayed and selected. |
| |
| |
| QFileInfo |
| ------------------ |
| QFileInfo now supports Large Files (> 2GB) internally. To maintain |
| binary compatibility the QFileInfo API cannot be adapted before Qt 4 |
| and will truncate file sizes and offsets to 4 GB. |
| |
| New functions: |
| bool isHidden() const |
| |
| |
| QFile |
| ------------------ |
| QFile now supports Large Files (> 2GB) internally. To maintain binary |
| compatibility the QFile API cannot be adapted before Qt 4 and will |
| truncate file sizes and offsets to 4 GB. |
| |
| |
| QDir |
| ------------------ |
| QDir now supports Large Files (> 2GB). |
| |
| |
| QImEvent |
| ------------------ |
| New functions: |
| in selectionLength() const |
| |
| |
| QIconSet |
| ------------------ |
| New functions: |
| void installIconFactory( QIconFactory *factory ) |
| |
| |
| QImage |
| ------------------ |
| New functions: |
| static QImage fromMimeSource( const QString& abs_name ) |
| |
| |
| QMetaObject |
| ------------------ |
| New functions: |
| QStrList enumeratorNames( bool super ) const |
| int numEnumerators( bool super ) const |
| static bool hasMetaObject( const char *class_name ) |
| |
| |
| QMenuData |
| ------------------ |
| New functions: |
| bool isItemVisible( int id ) const |
| void setItemVisible( int id, bool visible ) |
| Both functions are inherited by QMenuBar and QPopupMenu |
| |
| |
| QPaintDevice |
| ------------------ |
| New functions (x11 only): |
| static Qt::HANDLE x11AppRootWindow() |
| static int x11AppDepth( int screen ) |
| static int x11AppCells( int screen ) |
| static Qt::HANDLE x11AppRootWindow( int screen ) |
| static Qt::HANDLE x11AppColormap( int screen ) |
| static void *x11AppVisual( int screen ) |
| static bool x11AppDefaultColormap( int screen ) |
| static bool x11AppDefaultVisual( int screen ) |
| static int x11AppDpiX( int ) |
| static int x11AppDpiY( int ) |
| static void x11SetAppDpiX( int, int ) |
| static void x11SetAppDpiY( int, int ) |
| |
| |
| QPicture |
| ------------------ |
| New functions: |
| void setBoundingRect( const QRect &r ) |
| |
| |
| QPixmap |
| ------------------ |
| New functions: |
| bool hasAlpha() const |
| static QPixmap fromMimeSource( const QString& abs_name ) |
| |
| |
| QPrinter |
| ------------------ |
| New functions: |
| void setMargins( uint top, uint left, uint bottom, uint right ) |
| void margins( uint *top, uint *left, uint *bottom, uint *right ) const |
| |
| Improvements: |
| Handle masked images and pixmaps correctly. Add code to handle |
| asymmetrical printer margins correctly. |
| |
| |
| QSessionManager |
| ------------------ |
| New functions: |
| QString sessionKey() const |
| |
| |
| QStyleOption |
| ------------------ |
| New functions: |
| QStyleOption( QCheckListItem* i ) |
| QCheckListItem* checkListItem() const |
| |
| New enums values: |
| PE_CheckListController, PE_CheckListIndicator, |
| PE_CheckListExclusiveIndicator, PE_PanelGroupBox |
| CE_MenuBarEmptyArea |
| CE_DockWindowEmptyArea |
| PM_CheckListButtonSize |
| CT_TabBarTab, CT_Slider, CT_Header, CT_LineEdit |
| SH_GroupBox_TextLabelVerticalAlignment |
| |
| |
| QThread |
| ------------------ |
| New functions: |
| void terminate() |
| |
| |
| QTranslator |
| ------------------ |
| New functions: |
| bool load( const uchar *data, int len ) |
| |
| |
| QVariant |
| ------------------ |
| New functions: |
| QVariant( const QPen& ) |
| const QPen toPen() const |
| QPen& asPen() |
| bool isNull() const |
| |
| New enum values: |
| KeySequence, Pen |
| |
| |
| QWidget |
| ------------------ |
| All top-level widgets will now try to find an appropriate application |
| icon when they're not given one, trying in this order |
| 1. Parent widget's icon |
| 2. Top-level widget's icon |
| 3. Application main widget's icon |
| |
| New functions: |
| bool isFullScreen() const |
| void setSizePolicy( QSizePolicy::SizeType hor, QSizePolicy::SizeType ver, bool hfw = FALSE ) |
| |
| New enum values: |
| AncestorOrigin |
| |
| |
| QWMatrix |
| ------------------ |
| Two different transformation modes for painter transformations are now |
| available. See the QWMatrix documentation for details. |
| |
| New functions: |
| QPointArray mapToPolygon( const QRect &r ) const |
| double det() const |
| static void setTransformationMode( QWMatrix::TransformationMode m ) |
| static TransformationMode transformationMode() |
| |
| New enums: |
| TransformationMode { Points, Areas } |
| |
| |
| QFtp |
| ------------------ |
| While still remaining a subclass of QNetworkProtocol, QFtp can be now |
| used directly for more advanced FTP operations. The QFtp documentation |
| provides details of the extensions to the API. |
| |
| |
| QHttp |
| ------------------ |
| While still remaining a subclass of QNetworkProtocol, QHttp can be now |
| used directly for more advanced HTTP operations. The QHttp |
| documentation provides details of the extensions to the API. |
| |
| Related new classes: |
| QHttpHeader |
| QHttpResponseHeader |
| QHttpRequestHeader |
| |
| |
| QSqlDriver |
| ------------------ |
| New enum values: |
| Unicode, PreparedQueries, OracleBindingStyle, ODBCBindingStyle |
| |
| |
| QSqlQuery |
| ------------------ |
| New functions: |
| bool isForwardOnly() const |
| void setForwardOnly( bool forward ) |
| bool exec() |
| bool prepare( const QString& query ) |
| void bindValue( const QString& placeholder, const QVariant& val ) |
| void bindValue( int pos, const QVariant& val ) |
| void addBindValue( const QVariant& val ) |
| |
| |
| QTableSelection |
| ------------------ |
| New functions: |
| QTableSelection( int start_row, int start_col, int end_row, int end_col ) |
| |
| |
| QTable |
| ------------------ |
| New properties: |
| int numSelections |
| |
| New functions: |
| void selectCells( int start_row, int start_col, int end_row, int end_col ) |
| void selectRow( int row ) |
| void selectColumn( int col ) |
| void updateHeaderStates() |
| void setRowLabels( const QStringList &labels ) |
| void setColumnLabels( const QStringList &labels ) |
| |
| |
| QCString |
| ------------------ |
| New functions: |
| QCString &replace( char c, const char *after ) |
| QCString &replace( const char *, const char * ) |
| QCString &replace( char, char ) |
| |
| New global functions: |
| QByteArray qCompress( const uchar* data, int nbytes ) |
| QByteArray qUncompress( const uchar* data, int nbytes ) |
| QByteArray qCompress( const QByteArray& data ) |
| QByteArray qUncompress( const QByteArray& data ) |
| Improvements: |
| Speed optimisations in lots of the old search and replace |
| functions. |
| |
| |
| QDate |
| ------------------ |
| New functions: |
| int weekNumber( int *yearNum = 0 ) const |
| static QDate currentDate( Qt::DateTimeSpec ) |
| |
| |
| QTime |
| ------------------ |
| New functions: |
| static QTime currentTime( Qt::DateTimeSpec ) |
| |
| |
| QDateTime |
| ------------------ |
| New functions: |
| static QDateTime currentDateTime( Qt::DateTimeSpec ) |
| |
| |
| QPtrList |
| ------------------ |
| New functions: |
| bool replace( uint i, const type *d ) |
| |
| |
| QRegExp |
| ------------------ |
| New functions: |
| QString errorString() |
| static QString escape( const QString& str ) |
| int numCaptures() const |
| |
| |
| QSettings |
| ------------------ |
| New functions: |
| QSettings( Format format ) |
| void setPath( const QString &domain, const QString &product, Scope = User ) |
| void beginGroup( const QString &group ) |
| void endGroup() |
| void resetGroup() |
| QString group() const |
| |
| New enums: |
| Format { Native = 0, Ini } |
| Scope { User, Global } |
| |
| |
| QChar |
| ------------------ |
| Updated Unicode tables to Unicode-3.2 |
| |
| |
| QString |
| ------------------ |
| New functions: |
| QString &append( const QByteArray & ) |
| QString &append( const char * ) |
| QString &prepend( const QByteArray & ) |
| QString &prepend( const char * ) |
| QString &remove( QChar c ) |
| QString &remove( char c ) |
| QString &remove( const QString & ) |
| QString &remove( const QRegExp & ) |
| QString &remove( const char * ) |
| QString &replace( uint index, uint len, QChar ) |
| QString &replace( uint index, uint len, char c ) |
| QString &replace( QChar c, const QString & ) |
| QString &replace( char c, const QString & after ) |
| QString &replace( const QString &, const QString & ) |
| QString &replace( QChar, QChar ) |
| QString &operator+=( const QByteArray &str ) |
| QString &operator+=( const char *str ) |
| static QString fromUcs2( const unsigned short *ucs2 ) |
| const unsigned short *ucs2() const |
| |
| Improvements: |
| find(), findRev() and contains() use either a fast hashing |
| algorithm (for short strings) or an optimized Boyer-Moore |
| implementation for long strings. Lots of smaller performance |
| optimisations. |
| |
| |
| QTextStream |
| ------------------ |
| New functions: |
| QTextCodec *codec() |
| |
| |
| QTimeEdit |
| ------------------ |
| New properties: |
| Display display |
| |
| New functions: |
| uint display() const |
| void setDisplay( uint ) |
| |
| New enums: |
| Display { Hours, Minutes, Seconds, AMPM } |
| |
| |
| QFrame |
| ------------------ |
| New enum values: |
| GroupBoxPanel |
| |
| |
| QGroupBox |
| ------------------ |
| New properties: |
| bool flat |
| |
| New functions: |
| bool isFlat() const |
| void setFlat( bool b ) |
| |
| |
| QListBox |
| ------------------ |
| New functions: |
| QListBoxItem* selectedItem() const |
| |
| |
| QListView |
| ------------------ |
| New functions: |
| int sortColumn() const |
| |
| |
| QSlider |
| ------------------ |
| New functions: |
| void addLine() ( as slot) |
| void subtractLine() (as slot) |
| |
| |
| QTextBrowser |
| ------------------ |
| New functions: |
| void sourceChanged( const QString& ) |
| void anchorClicked( const QString&, const QString& ) |
| |
| |
| QTextEdit |
| ------------------ |
| QTextEdit offers another TextFormat (LogText), which is optimized |
| (speed and memory) for displaying large read-only texts normally used |
| for logging. |
| |
| New properties: |
| bool allowTabs |
| |
| New functions: |
| QString anchorAt( const QPoint& pos, AnchorAttribute a ) |
| void setAllowTabs( bool b ) |
| bool allowTabs() const |
| void insert( const QString &text, uint insertionFlags = CheckNewLines | RemoveSelected ) |
| |
| New signals: |
| void clicked( int parag, int index ) |
| void doubleClicked( int parag, int index ) |
| |
| New enums: |
| TextInsertionFlags { RedoIndentation, CheckNewLines, RemoveSelected } |
| |
| New enum values: |
| AtWordOrDocumentBoundary |
| |
| |
| QToolButton |
| ------------------ |
| New properties: |
| TextPosition textPosition |
| |
| New functions: |
| TextPosition textPosition() const |
| void setTextPosition( TextPosition pos ) |
| |
| New enums: |
| TextPosition { Right, Under } |
| |
| |
| QTooltip |
| ------------------ |
| New functions: |
| static void setWakeUpDelay( int ) |
| |
| |
| QWhatsThis |
| ------------------ |
| New functions: |
| static void setFont( const QFont &font ) |
| |
| |
| QDomDocument |
| ------------------ |
| New functions: |
| QString toString( int ) const |
| QCString toCString( int ) const |
| |
| |
| QFont on X11 |
| ------------------ |
| Improvements: |
| Safe handling of huge font sizes. Added support for the new |
| Xft2 font library on XFree-4.x. |
| |
| |
| QRegion on X11 |
| ------------------ |
| Improvements: |
| Removed the 16 bit size limitation |
| |
| **************************************************************************** |