****************************************************************************
* Important Notices *
****************************************************************************
Meta-Object System
------------------
Qt 4.0.0 introduced a change to the way type names outside the current
scope were handled in signals and slots declarations and connections
which differed from the behavior in Qt 3.x.
Unfortunately, this could lead to signal-slot connections that were
potentially type-unsafe. Therefore, in Qt 4.0.1 type names must be fully
qualified in signal-slot declarations and connections.
For example, in Qt 4.0.0, it was possible to write:
connect(socket, SIGNAL(error(SocketError)), ...);
In Qt 4.0.1, the above connection must be made in the following way:
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), ...);
Library
-------
Support for SGI Altix has been added for both gcc and Intel icc.
QX11EmbedContainer and QX11EmbedWidget are now exported classes.
This change only affects developers using Qt/X11 with gcc >= 4.0 and
symbol visibility enabled. Applications built against Qt 4.0.1 that
use these classes cannot be linked against Qt 4.0.0.
****************************************************************************
* Changes *
****************************************************************************
Qt Designer
-----------
Fixed crash in designer when using fonts in custom widgets that
don't have a point size set but use a pixel size instead.
Fixed initial positions of the form windows in the MDI mode.
Ensured that the object inspector is updated when a page is added
to a widget stack.
Ensured that the SDK is installed and the library symbols are
exported.
Fixed crash when breaking a layout after deleting all widgets within.
Fixed handling of nested action groups.
Fixed mouse handling to match user expectations on different
platforms.
Don't change system setting for double click interval.
Disabled the richtext editor for the "statusTip" property.
Improved widget handling, loading and saving for QFrame, QTabWidget,
and Q3GroupBox.
Added a platform-neutral mechanism for saving key sequences.
Used Qt's list of supported image formats rather than an incomplete
static list.
Provided a way for plugins to access to the layout of container
widgets.
Added support for editable byte arrays.
Qt Linguist
-----------
Made lupdate handle cases where the compiler converts strings using
a different codec to that used by lupdate.
Fixed bug in lupdate and lrelease's .pro file parser.
Fixed lupdate's octal sequence handling.
Fixed duplicate context when two contexts have the same hash value.
Qt 3 to 4 Porting Tool
----------------------
Fixed connnect statement that did not work with the new stricter moc.
Fixed incorrect porting of enum values in switch statements.
Fixed header file name replacements in include directives.
Meta Object Compiler (moc)
--------------------------
Fixed VC6 compilation of moc generated code with namespaced
superclasses.
Fixed parsing of functions that throw exceptions.
Fixed compilation of moc generated code with VC6 when inheriting
from classes inside namespaces.
Improved the efficiency of signals with default arguments.
Qt Assistant
------------
Fixed the document list for full text search indexing.
Fixed case sensitive completion in the find dialog combobox.
Re-enabled the "add content file" option.
Removed the "General" tab in the settings dialog.
Fixed registry key handling and deletion of cache files.
Made it possible to read titles in the tabs in assistant.
Updated the QAssistantClient documentation.
Added the QtAssistantClient headers to the other library headers
for installation.
Fixed full text search for phrases.
General Fixes
-------------
- Dialogs
Removed hard-coded margin and spacing values from built-in
dialogs.
- QAbstractItemModel
Fixed crash caused by removing an item with expanded children.
Added some more see also links and defined QModelIndexList.
- QAbstractItemView
Fixed rendering and selection issues with MultiSelection
mode.
Improved handling of persistent editors.
Improved performance of item insertion.
Improved signal handling and emission.
- QAbstractSlider
Ensured that no changes occur if the orientation doesn't
change in a call to setOrientation().
Introduced better keyboard control for sliders.
Fixed sliderPressed() and sliderReleased() signal emissions.
- QAbstractSocket
Fixed race condition in connectToHost().
Made bytesAvailable() return the unget buffer size as well
as the size of any pending data.
Made NetworkLayerProtocol non-internal.
- QAbstractSpinBox
Fixed problems with locale and the "." and "," separators.
Improved handling of extra whitespace at the beginning and
end of user input.
- QApplication
Made closeAllWindows() respect windows that reject the close
event.
Fixed crash caused by calling QApplication::setStyle()
before a qApp was created.
Improved handling of the last open window for most cases.
Improved event handling.
- QBezier
Used a new algorithm for offsetting curves.
Improved performance by using a more sophisticated
algorithm and by making QBezier a POD type.
- QBrush
Improved radial gradient rendering.
- QColorDialog
Process the return key correctly.
- QComboBox
Fixed behaviour of setMaxItems() to enable new items to be
inserted within the range allowed.
- QCommonStyle
Ensured that mnemonics are always shown for buttons.
Fixed position of right corner widget when used on its own.
- QDateTimeEdit
Improved the range of input allowed for numbers.
- QDial
Fixed valueChanged() signal emission.
- QDialog
Fixed Lower QSizeGrip in QDialog instead of raising it.
- QDir
Fixed relative path handling on Windows.
Reverted empty string matching behavior to match Qt 3's
behavior.
Restored API compatibility with Qt 3.
- QDirModel
Fixed accidental deletion of directories in read-only mode.
- QDockWidget
Ensured that the size of a floating dock widget is the same
regardless of how it was floated.
Reintroduced double-clicking behavior to float a dock
widget.
Fixed incorrect moving behavior for floating widgets.
Ensured that dock widgets display a close icon only if they
can be closed.
- QDockWidgetLayout
See QMainWindow.
- QDomNodeList
Fixed handling of out-of-range items.
- QDoubleSpinBox
Improved decimals handling and rounding behavior in
QDoubleSpinBox.
- QFile
Fixed problems with carriage return and line feed handling
in readLine().
Ensured that pos() returns the correct value if the file
shrinks.
- QFileDialog
Fixed incorrect behavior where the dialog would go to the
root directory if the user tried to enter a non-existent
directory.
Fixed sorting by type behavior.
- QFontDatabase
Fixed loading of special fonts.
Fixed sample characters for Chinese scripts.
- QFontDialog
Switched the locations of the OK and Cancel buttons.
Made items in the font dialog read-only.
Improved handling of the OK and Cancel buttons when the
dialog is in reverse layout mode.
- QGifHandler
Reintroduced GIF plugin support.
- QGridLayout
Improved default size handling.
- QHeaderView
Fixed section hiding behavior.
Fixed Out of bounds error and improper calculation of last
column.
Improved mouse handling and widget updating.
Fixed crashes caused by moving or removing sections, or by
updating the current section.
Improved signal behavior for resized or removed sections.
- QHttp
Fixed proxy authentication.
Fixed broken behavior when scheduling many requests to
different hosts.
Fixed socket object ownership issues with setSocket() that
could lead to a crash.
- QImage
Fixed smooth scaling for image formats other than RGB and
ARGB32.
- QImageReader
Fixed the default implementation of imageCount() to return a
valid number of images.
- QInputDialog
Switched the locations of the OK and Cancel buttons.
- QIODevice
Fixed problems with carriage return and line feed handling
in readLine().
Made bytesAvailable() return the unget buffer size as well
as the size of any pending data.
Fixed error handling when reading lines with QFile.
Fixed seek() behavior with regard to the unget buffer.
- QItemDelegate
Improved layout handling, redrawing, signal emission,
and mouse click behavior.
- QKeySequence
Fixed accidental HTML escaping of ampersands.
- QLayout
Print out object names in warnings.
- QLineEdit
Enabled textChanged() signal emission when using input
methods.
Improved return key press handling for users of the
returnPressed() signal.
Fixed context menu action handling.
Fixed editingFinished() signal emission behavior.
Fixed Ctrl-K and Ctrl-U behavior to cut text rather than
just deleting it.
Fixed line edit selection behavior to maintain any current
selection when the widget receives the keyboard focus.
- QListView
Improved handling of hidden rows.
Fixed rendering when used in reverse mode.
- QListWidget
Fixed the size policy for laying out items in the list.
Improved sorting performance.
Fixed persistent index handling when sorting.
- QMainWindow
Fixed problems with multiple connections from QMainWindow
signals to QToolBar slots.
Fixed dock widget handling (adding a widget to all dock
areas) and incorrect dock area splitting behavior that
could lead to crashes in QMainWindow.
Made QMainWindow's status bar have an "Ignored" horizontal
size policy.
- QMetaObject
Fixed meta objects that reported far too many enums.
Fixed the behavior of sender() to return the correct value
during queued activation.
- QMetaType
Fixed whitespace handling in template specialization.
Fixed missing qt_metatype_id implementation for <void *>.
Added more support for compilation with QT_NO_DATASTREAM.
- QMenu
Fixed keyboard navigation when mouse navigation is also
being used.
Fixed menu bar merging behavior.
- QMenuBar
Fixed Alt key navigation.
- QObject
Fixed incorrect exception handling.
- QPaintEngine
Suppressed warnings when drawing "empty" text.
Fixed rendering of Underline, Overline, and StrikeOut for
text drawn using outlines.
- QPainter
Improved handling of clip regions when restore() is called.
Improved text drawing performance.
- QPaintDevice
Allowed construction of QImage before QApplication.
- QPainterPath
Improved performance and rendering accuracy.
- QPen
Fixed missing detach in setWidth().
- QPixmap
Improved drawing speed and mask handling.
- QPlastiqueStyle
Improved visual feedback for scrollbar page buttons and
slider handle.
Improved Plastique style on non-XRender-enabled displays.
- QProcess
Fixed endless loop of signal being emitted if model dialog
is used in slot.
Made bytesAvailable() return the unget buffer size as well
as the size of any pending data.
- QProxyModel
Improved signal handling for propagated signals.
- QResource
Fixed Latin-1 string handling.
Fixed unloading of resources.
- QScrollArea
Fixed widget resizing so that widgets that are smaller than
the viewport remain visible.
- QSettings
Made it possible to store QImage/QPixmap settings.
Fixed race conditions in QSettings with INI files.
Improved handling of non-terminated strings in INI files.
- QSizeGrip
Made the Qt 3-style constructor public.
- QSpinBox
Fixed problems with out-of-range integers and doubles.
- QSqlQueryModel
Fixed integration between QSqlTableModel and MS Access.
Fixed signal emissions for tables with only one row.
- QSqlTableModel
Fixed problems with multiple record insertion.
- QStatusBar
Fixed status bar height without size grip.
- QTabBar
Fixed handling of the current page index when adding the
first page to QTabWidget.
Improved tab bar icon handling to enable icons to be updated
without redrawing the entire tab bar.
- QTableView
Improved text cursor handling and support for keyboard
modifiers.
Fixed problems with disappearing headers.
Disallowed selection of hidden rows and columns.
Fixed crashes involving empty models and tables with headers
but no rows or columns.
- QTableWidget
Improved sorting and signal emission behavior.
- QTabWidget
Fixed handling of the current widget to keep the tab bar
updated.
- QTextBrowser
Removed temporary visible text selection when activating
anchors with Shift-click.
- QTextCursor
Fixed selection behavior for words at the beginning of lines.
Fixed incorrect use of character formats when calling
insertFragment().
Fixed incorrect text insertion where line feeds and carriage
returns would not be transformed into Unicode block
separators.
- QTextDocument
Added support for page breaking.
Added support for relative font sizes.
Added support for <hr /> tags.
Fixed clipboard handling and drag and drop of text frames.
Fixed handling of closing HTML </center> tags.
Fixed crash (failing assertion) on import of nested empty
HTML tables.
Fixed data corruption in fromPlainText().
Corrected the handling of image tags inside anchors.
Fixed introduction of empty spaces or lines before and after
tables.
Fixed misrendering of some nested HTML tables with variable
sized columns.
Fixed crash in table drawing due to out-of-bounds access.
Added support for the pageCountChanged() signal.
Improved performance and size of PostScript images when
printing high resolution or scaled images.
- QTextEdit
Improved layout and selection handling.
Added configuration support for non-blinking cursors.
Improved keyboard handling.
Improved text insertion handling.
- QTextFormat
Added support for horizontal rules.
Improved font handling.
- QTextLayout
Allow line breaking at tabs.
Improved reporting of line widths for lines ending with a
QChar::LineSeparator.
Fixed reporting of the minimum width for layouts that have
NoWrap/ManualWrap as their wrap policy.
- QTextStream
Fixed locking behavior when reading from stdin.
Fixed seek() behavior.
Improved Latin-1 string handling.
- QTextTable
Improved performance and selection handling.
- QToolBar
Fixed toolbar resizing behavior to handle icon size changes.
- QTreeView
Improved handling of hidden rows, columns, and child items.
Fixed repainting issues with newly inserted child items
and selections.
Improved scrolling behavior.
Fixed crashes involving column handling and empty views.
Fixed sorting indicator behavior.
- QTreeWidget
Improved item insertion performance.
Fixed clone() and operator=() for QTreeWidgetItem.
Fixed crash when removing or deleting items with children.
Improved sorting performance.
Fixed sorting indicator behavior.
Fixed persistent index handling when sorting.
- QUrl
Improved the performance of removeDots().
- QWidget
Fixed problems with adding an action multiple times.
- QXmlInputSource
Improved heuristics for determining character encodings.
- Q3FileDialog
Fixed file selection handling.
Platform-Specific Issues
------------------------
Windows:
- QApplication
Fixed Block modeless elements of client when ActiveX opens a
modal dialog
Enabled tablet support.
Improved event handling for popup widgets.
- QAxWidget
Support a document site only if the COM object allows proper
initialization with a storage.
- QFileDialog
Updated to use the latest native Windows dialogs.
- QProcess
Fixed behavior of forwarded read channels.
- QSettings
Fixed behavior of childKeys() with respect to the default
key.
- QWindowsStyle
Fixed menu item size.
Improved drawing of default push buttons.
Fixed rendering of sliders to correctly differentiate
between those in enabled and disabled states.
- QWindowsXPStyle
Fixed menu frame rendering.
Reduced the space allocate to menu items.
X11:
- QApplication
Fixed incorrect initialization of screen and resolution.
Improved mouse button handling.
Fixed handling of withdrawn windows.
- QBitmap
Fixed bitmap brush textures to ensure that they use the
correct color with XRender.
- QFont
Fixed handle() to return useful values.
- QFontDatabase
Fixed fonts for some writing systems not being loaded on X11
- QPaintEngine
Fixed multi-screen support.
Improved performance and rendering accuracy.
Fixed dot-dash patterns when drawing with large pen widths.
Improved text rendering on exported displays.
- QWidget
Implemented support for window opacity.
Added support for widgets with 32 bit sizes.
Improved support for different active and inactive background
brushes.
Fixed window icons on X servers that have truecolor and
pseudocolor visuals with different depths.
Fixed text rendering on exported displays.
- QXIMInputContext
Fixed crash in XIM code with newer x.org libraries.
Fixed support for switching input method styles.
- QX11Embed
Exported QX11Embed (see the Important Changes section
above).
Improved handling of non-XEmbed clients.
Improved geometry and focus handling.
UNIX:
- QPageSetupDialog
Reduced the size of the dialog.
- QPrintDialog
Fixed initialization of color and grayscale radio buttons.
- QProcess
Fixed incorrect notification of process termination on
Linux kernels up to and including the 2.4 series.
Made QProcess emit an error() when failing to launch a
program.
Mac OS X:
- QApplication
Fixed widgetAt() to handle transparent widgets.
Handle keyboard events in the active window if no focus
window is available.
Changed wheel mouse scrolling speed to match that of
other applications.
- QComboBox
Fixed rendering of combobox frames.
- QDnD
Fixed URL handling.
- QClipboard
Fixed Junk at end of pasted text on Qt/Mac.
- QCursor
Fixed incorrect pixmap handling.
- QFileDialog
Fixed sheet modality issues to prevent the dialog from being
hidden behind other windows.
- QFont
Default to using the Geneva font.
Enable kerning and fix Arabic text handling.
- QLibraryInfo
Fixed location of qt.conf in Mac OS X bundles.
- QMacStyle
Improvements to rendering accuracy of comboboxes, tab bars,
workspace windows, tool buttons, and push buttons.
Fixed incorrect drawing of scrollbars with "inverted
appearance".
Fixed font-related crash for applications configured to
use the standard desktop settings.
- QMenu
Improved menu bar handling on navigation dialogs.
- QMenuBar
Improved menu bar hiding/wrapping behavior.
- QPaintDevice
Removed byte order assumptions.
- QPaintEngine
Improved brush handling, clipping, masking, and tiling
operations.
- QPixmap
Improvements to pixmap copying and conversion, masking, and
alpha channel handling.
Removed byte order assumptions.
- QPrintEngine
Made color printing the default behavior.
- QSettings
Sync the application's setting on construction of a
QSettings object.
- QSysInfo
Included enum values for Mac OS X codenames in the
MacVersion version enum.
- QWidget
Improved mouse event handling.
Improved interoperability between modal widgets.
Tools
-----
- uic3
Fixed class name handling when used in "-convert" mode.
Fixed vertical space issues with .ui files converted from
Qt 3 to Qt 4.
Improved support for Qt3Support widgets.
Improved support for deprecated enums.
Added a generator for dependencies in Qt 3 .ui files.
- rcc
Added better error reporting.
- uic
Added code generation for tab attributes.
Fixed text codec handling.
Used UTF-8 as the default enconding in .ui files.
Fixed code generation for QWizard.
Documentation
-------------
Porting:
Removed QMovie from the list of implicitly shared classes that were
previously explicitly shared.
Added .ui porting document to the 4.0.1 documentation.
Added sections about QHBox, QVBox, and QGrid to the porting guide.
Added QImageIO and QMovie to the porting guide.
Added QRegExp and some QDir functions to the porting guide.
Added QObject::objectTrees() to the porting guide.
Added QPopupMenu to the porting guide.
General:
Fix documentation of amortized container behavior.
Added information about using specific compilers to build Qt.
Removed QtMotif documentation because it is now part of Qt Solutions.
Clarify parent-child relationship within QThreads.
Documented potential file name clashes when using precompiled headers.
Added a Windows XP gallery.
Added pages to contain lists of classes for each Commercial Edition.
Reintroduced the QAssistantClient documentation as part of the
QtAssistant module.
Added missing Qt Designer API documentation.
- QApplication
Documented correct use of QApplication::setStyle().
- QComboBox
Made removeItem() and setRootModelIndex() visible in the
documentation.
- QMetaObject
Added missing documentation for QGenericArgument and
QGenericReturnArgument, making them visible in the
documentation, but not recommended for casual use.
- QPainter
Make QPainter::setRedirected() visible and fix its
description.
- QSqlDatabase
Document what happens when passing an existing connection
name to addDatabase().