**************************************************************************** * 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 . 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
tags. Fixed clipboard handling and drag and drop of text frames. Fixed handling of closing HTML 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().