diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2009-03-23 09:18:55 (GMT) |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2009-03-23 09:18:55 (GMT) |
commit | e5fcad302d86d316390c6b0f62759a067313e8a9 (patch) | |
tree | c2afbf6f1066b6ce261f14341cf6d310e5595bc1 /dist/changes-3.0.0 | |
download | Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.zip Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.gz Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.bz2 |
Long live Qt 4.5!
Diffstat (limited to 'dist/changes-3.0.0')
-rw-r--r-- | dist/changes-3.0.0 | 720 |
1 files changed, 720 insertions, 0 deletions
diff --git a/dist/changes-3.0.0 b/dist/changes-3.0.0 new file mode 100644 index 0000000..1f6ad5b --- /dev/null +++ b/dist/changes-3.0.0 @@ -0,0 +1,720 @@ +Qt 3.0 adds a wide range of major new features as well as substantial +improvements over the Qt 2.x series. Some internals have undergone +major redesign and new classes and methods have been added. + +The Qt version 3.x series is not binary compatible with the 2.x +series. This means programs compiled with Qt version 2.x must be +recompiled to work with Qt 3.0. + +In addition to the traditional Qt platforms Linux, Unix and the +various flavours of MS-Windows. Qt 3.0 for the first time introduces a +native port to MacOS X. Like all Qt versions, Qt/Mac is source +compatible with the other editions and follows closely the platform's +native look and feel guidelines. + +We have tried to keep the API of Qt 3.0 as compatible as possible with +the Qt 2.x series. For most applications, only minor changes will be +needed to compile and run them successfully using Qt 3.0. + +One of the major new features that has been added in the 3.0 release +is a module allowing you to easily work with databases. The API is +platform independent and database neutral. This module is seamlessly +integrated into Qt Designer, greatly simplifying the process of +building database applications and using data aware widgets. + +Other major new features include a plugin architecture to extend Qt's +functionality, for styles, text encodings, image formats and database +drivers. The Unicode support of Qt 2.x has been greatly enhanced, it +now includes full support for scripts written from right to left +(e.g. Arabic and Hebrew) and also provides improved support for Asian +languages. + +Many new classes have been added to the Qt Library. Amongst them are +classes that provide a docking architecture (QDockArea/QDockWindow), a +powerful rich text editor (QTextEdit), a class to store and access +application settings (QSettings) and a class to create and communicate +with processes (QProcess). + +Apart from the changes in the library itself a lot has been done to +make the development of Qt applications with Qt 3.0 even easier than +before. Two new applications have been added: Qt Linguist is a tool to +help you translate your application into different languages; Qt +Assistant is an easy to use help browser for the Qt documentation that +supports bookmarks and can search by keyword. + +Another change concerns the Qt build system, which has been reworked +to make it a lot easier to port Qt to new platforms. You can use this +platform independent build system - called qmake - for your own +applications. + +And last but not least we hope you will enjoy the revisited and widely +extended documentation. + + +Qt/Embedded +---------- + +Qt/Embedded 3.0 provides the same features as Qt 3.0, but currently +lacks some of the memory optimizations and fine-tuning capabilities of +Qt/Embedded 2.3.x. We will add these in the upcoming maintainance +releases. + +If you develop a new product based on Qt/Embedded, we recommend +switching to 3.0 because of the greatly improved functionality. +However, if you are planning a release within the next two months and +require memory optimizations not available with Qt/Embedded 3.0, we +suggest using Qt/Embedded 2.3.x. + + +The Qt Library +======================================== + +A large number of new features has been added to Qt 3.0. The following +list gives an overview of the most important new and changed aspects +of the Qt library. + + +Database support +---------------- + +One of the major new features in Qt 3.0 is the SQL module that +provides cross-platform access to SQL databases, making database +application programming with Qt seamless and portable. The API, built +with standard SQL, is database-neutral and software development is +independent of the underlying database. + +A collection of tightly focused C++ classes are provided to give the +programmer direct access to SQL databases. Developers can send raw SQL +to the database server or have the Qt SQL classes generate SQL queries +automatically. Drivers for Oracle, PostgreSQL, MySQL and ODBC are +available and writing new drivers is straightforward. + +Tying the results of SQL queries to GUI components is fully supported +by Qt's SQL widgets. These classes include a tabular data widget +(for spreadsheet-like data presentation with in-place editing), a +form-based data browser (which provides data navigation and edit +functions) and a form-based data viewer (which provides read-only +forms). This framework can be extended by using custom field editors, +allowing for example, a data table to use custom widgets for in-place +editing. The SQL module fully supports Qt's signals/slots mechanism, +making it easy for developers to include their own data validation and +auditing code. + +Qt Designer fully supports Qt's SQL module. All SQL widgets can be +laid out within Qt Designer, and relationships can be established +between controls visually. Many interactions can be defined purely in +terms of Qt's signals/slots mechanism directly in Qt Designer. + + +Explicit linking and plugins +------------------------- + +The QLibrary class provides a platform independent wrapper for runtime +loading of shared libraries. + +Specialized classes that make it possible to extend Qt's functionality +with plugins: QStylePlugin for user interface styles, QTextCodecPlugin +for text encodings, QImageFormatPlugin for image formats and +QSqlDriverPlugin for database drivers. + +It is possible to remove unused components from the Qt library, and +easy to extend any application with 3rd party styles, database drivers +or text codecs. + +Qt Designer supports custom widgets in plugins, and will use the +widgets both when designing and previewing forms (QWidgetPlugin). + + +Rich text engine and editor +--------------------------- + +The rich text engine originally introduced in Qt 2.0 has been further +optimized and extended to support editing. It allows editing formatted +text with different fonts, colors, paragraph styles, tables and +images. The editor supports different word wrap modes, command-based +undo/redo, multiple selections, drag and drop, and many other +features. The engine is highly optimized for proccesing and displaying +large documents quickly and efficiently. + + +Unicode +------- + +Apart from the rich text engine, another new feature of Qt 3.0 that +relates to text handling is the greatly improved Unicode support. Qt +3.0 includes an implementation of the bidirectional algorithm (BiDi) +as defined in the Unicode standard and a shaping engine for Arabic, +which gives full native language support to Arabic and Hebrew speaking +people. At the same time the support for Asian languages has been +greatly enhanced. + +The support is almost transparent for the developer using Qt to +develop their applications. This means that developers who developed +applications using Qt 2.x will automatically gain the full support for +these languages when switching to Qt 3.0. Developers can rely on their +application to work for people using writing systems different from +Latin1, without having to worry about the complexities involved with +these scripts, as Qt takes care of this automatically. + + +Docked and Floating Windows +--------------------------- + +Qt 3.0 introduces the concept of dock windows and dock areas. Dock +windows are widgets, that can be attached to, and detached from, dock +areas. The most common kind of dock window is a tool bar. Any number of +dock windows may be placed in a dock area. A main window can have dock +areas, for example, QMainWindow provides four dock areas (top, left, +bottom, right) by default. The user can freely move dock windows and +place them at a convenient place in a dock area, or drag them out of +the application and have them float freely as top level windows in +their own right. Dock windows can also be minimized or hidden. + +For developers, dock windows behave just like ordinary widgets. QToolbar +for example is now a specialized subclass of a dock window. The API +of QMainWindow and QToolBar is source compatible with Qt 2.x, so +existing code which uses these classes will continue to work. + + +Regular Expressions +------------------- + +Qt has always provided regular expression support, but that support +was pretty much limited to what was required in common GUI control +elements such as file dialogs. Qt 3.0 introduces a new regular +expression engine that supports most of Perl's regex features and is +Unicode based. The most useful additions are support for parentheses +(capturing and non-capturing) and backreferences. + + +Storing application settings +---------------------------- + +Most programs will need to store some settings between runs, for +example, user selected fonts, colors and other preferences, or a list +of recently used files. The new QSettings class provides a platform +independent way to achieve this goal. The API makes it easy to store +and retrieve most of the basic data types used in Qt (such as basic +C++ types, strings, lists, colors, etc). The class uses the registry +on the Windows platform and traditional resource files on Unix. + + +Creating and controlling other processes +---------------------------------------- + +QProcess is a class that allows you to start other programs from +within a Qt application in a platform independent manner. It gives you +full control over the started program. For example you can redirect +the input and output of console applications. + + +Accessibility +--------------- + +Accessibility means making software usable and accessible to a wide +range of users, including those with disabilities. In Qt 3.0, most +widgets provide accessibility information for assistive tools that can +be used by a wide range of disabled users. Qt standard widgets like +buttons or range controls are fully supported. Support for complex +widgets, like e.g. QListView, is in development. Existing applications +that make use of standard widgets will become accessible just by using +Qt 3.0. + +Qt uses the Active Accessibility infrastructure on Windows, and needs +the MSAA SDK, which is part of most platform SDKs. With improving +standardization of accessibility on other platforms, Qt will support +assistive technologies on other systems too. + + +XML Improvements +---------------- + +The XML framework introduced in Qt 2.2 has been vastly improved. Qt +2.2 already supported level 1 of the Document Object Model (DOM), a +W3C standard for accessing and modifying XML documents. Qt 3.0 has +added support for DOM Level 2 and XML namespaces. + +The XML parser has been extended to allow incremental parsing of XML +documents. This allows you to start parsing the document directly +after the first parts of the data have arrived, and to continue +whenever new data is available. This is especially useful if the XML +document is read from a slow source, e.g. over the network, as it +allows the application to start working on the data at a very early +stage. + + +SVG support +----------- + +SVG is a W3C standard for "Scalable Vector Graphics". Qt 3.0's SVG +support means that QPicture can optionally generate and import static +SVG documents. All the SVG features that have an equivalent in +QPainter are supported. + + +Multihead support +----------------- + +Many professional applications, such as DTP and CAD software, are able +to display data on two or more monitors. In Qt 3.0 the QDesktopWidget +class provides the application with runtime information about the +number and geometry of the desktops on the different monitors and such +allows applications to efficiently use a multi-monitor setup. + +The virtual desktop of Windows 98 and 2000 is supported, as well as +the traditional multi-screen and the newer Xinerama multihead setups +on X11. + + +X11 specific enhancements +------------------------- + +Qt 3.0 now complies with the NET WM Specification, recently adopted +by KDE 2.0. This allows easy integration and proper execution with +desktop environments that support the NET WM specification. + +The font handling on X11 has undergone major changes. QFont no longer +has a one-to-one relation with window system fonts. QFont is now a +logical font that can load multiple window system fonts to simplify +Unicode text display. This completely removes the burden of +changing/setting fonts for a specific locale/language from the +programmer. For end-users, any font can be used in any locale. For +example, a user in Norway will be able to see Korean text without +having to set their locale to Korean. + +Qt 3.0 also supports the new render extension recently added to +XFree86. This adds support for anti-aliased text and pixmaps with +alpha channel (semi transparency) on the systems that support the +rendering extension (at the moment XFree 4.0.3 and later). + + +Printing +-------- + +Printing support has been enhanced on all platforms. The QPrinter +class now supports setting a virtual resolution for the painting +process. This makes WYSIWYG printing trivial, and also allows you to +take full advantage of the high resolution of a printer when painting +on it. + +The postscript driver built into Qt and used on Unix has been greatly +enhanced. It supports the embedding of true/open type and type1 fonts +into the document, and can correctly handle and display Unicode. +Support for fonts built into the printer has been enhanced and Qt now +knows about the most common printer fonts used for Asian languages. + + +Networking +----------- + +A new class QHttp provides a simple interface for HTTP downloads and +uploads. + + +Compatibility with the Standard Template Library (STL) +------------------------------------------------------ + +Support for the C++ Standard Template Library has been added to the Qt +Template Library (QTL). The QTL classes now contain appropriate copy +constructors and typedefs so that they can be freely mixed with other +STL containers and algorithms. In addition, new member functions have +been added to QTL template classes which correspond to STL-style +naming conventions (e.g., push_back()). + + +Qt Designer +======================================== + +Qt Designer was a pure dialog editor in Qt 2.2 but has now been +extended to provide the full functionality of a GUI design tool. + +This includes the ability to lay out main windows with menus and +toolbars. Actions can be edited within Qt Designer and then plugged +into toolbars and menu bars via drag and drop. Splitters can now be +used in a way similar to layouts to group widgets horizontally or +vertically. + +In Qt 2.2, many of the dialogs created by Qt Designer had to be +subclassed to implement functionality beyond the predefined signal and +slot connections. Whilst the subclassing approach is still fully +supported, Qt Designer now offers an alternative: a plugin for editing +code. The editor offers features such as syntax highlighting, +completion, parentheses matching and incremental search. + +The functionality of Qt Designer can now be extended via plugins. +Using Qt Designer's interface or by implementing one of the provided +interfaces in a plugin, a two way communication between plugin and Qt +Designer can be established. This functionality is used to implement +plugins for custom widgets, so that they can be used as real widgets +inside the designer. + +Basic support for project management has been added. This allows you +to read and edit *.pro files, add and remove files to/from the project +and do some global operations on the project. You can now open the +project file and have one-click access to all the *.ui forms in the +project. + +In addition to generating code via uic, Qt Designer now supports the +dynamic creation of widgets directly from XML user interface +description files (*.ui files) at runtime. This eliminates the need of +recompiling your application when the GUI changes, and could be used +to enable your customers to do their own customizations. Technically, +the feature is provided by a new class, QWidgetFactory in the +UI-library. + + +Qt Linguist +======================================== + +Qt Linguist is a GUI utility to support translating the user-visible +text in applications written with Qt. It comes with two command-line +tools: lupdate and lrelease. + +Translation of a Qt application is a three-step process: + + 1) Run lupdate to extract user-visible text from the C++ source + code of the Qt application, resulting in a translation source file + (a *.ts file). + 2) Provide translations for the source texts in the *.ts file using + Qt Linguist. + 3) Run lrelease to obtain a light-weight message file (a *.qm file) + from the *.ts file, which provides very fast lookup for released + applications. + +Qt Linguist is a tool suitable for use by translators. Each +user-visible (source) text is characterized by the text itself, a +context (usually the name of the C++ class containing the text), and +an optional comment to help the translator. The C++ class name will +usually be the name of the relevant dialog, and the comment will often +contain instructions that describe how to navigate to the relevant +dialog. + +You can create phrase books for Qt Linguist to provide common +translations to help ensure consistency and to speed up the +translation process. Whenever a translator navigates to a new text to +translate, Qt Linguist uses an intelligent algorithm to provide a list +of possible translations: the list is composed of relevant text from +any open phrase books and also from identical or similar text that has +already been translated. + +Once a translation is complete it can be marked as "done"; such +translations are included in the *.qm file. Text that has not been +"done" is included in the *.qm file in its original form. Although Qt +Linguist is a GUI application with dock windows and mouse control, +toolbars, etc., it has a full set of keyboard shortcuts to make +translation as fast and efficient as possible. + +When the Qt application that you're developing evolves (e.g. from +version 1.0 to version 1.1), the utility lupdate merges the source +texts from the new version with the previous translation source file, +reusing existing translations. In some typical cases, lupdate may +suggest translations. These translations are marked as unfinished, so +you can easily find and check them. + + +Qt Assistant +======================================== + +Due to the positive feedback we received about the help system built +into Qt Designer, we decided to offer this part as a separate +application called Qt Assistant. Qt Assistant can be used to browse +the Qt class documentation as well as the manuals for Qt Designer and +Qt Linguist. It offers index searching, a contents overview, bookmarks +history and incremental search. Qt Assistant is used by both Qt +Designer and Qt Linguist for browsing their help documentation. + + +qmake +======================================== + +qmake is a cross-platform make utility that makes it possible to build +the Qt library and Qt-based applications on various target platforms +from one single project description. It is the C++ successor of +'tmake' which required Perl. + +qmake offers additional functionallity that is difficult to reproduce +in tmake. Trolltech uses qmake in its build system for Qt and related +products and we have released it as free software. + + + +Detailed changes +============= + +Qt 3.0 went through 6 beta releases. These are the detailed changes +since Beta 6 only. For other changes, please see the changes notes +of the respective beta releases. + + +Qt 3.0 final is not binary compatible with Beta6; any programs linked +against Beta6 must be recompiled. + +Below you will find a description of general changes in the Qt +Library, Qt Designer and Qt Assistant. Followed by a detailed list of +changes in the API. + +**************************************************************************** +* General * +**************************************************************************** + +**************************************************************************** +* Library * +**************************************************************************** + +- QApplication + make sure we process deferred deletes before leaving the event + loop. This fixes some ocassions of memory leaks on exit. + win32: some improvements for modality and dockwindow handling + x11 only: read non-gui QSettings when running without GUI. + + +- QCheckListItem + Make the checkboxes respect the AlignCenter flag. Also make + the boxes look better in case they are not placed in the first + column. + +- QComboBox + if we have a currentItem and then we set the combobox to be + editable then set the text in the lineedit to be of the + current item. + +- QCommonStyle + QToolButton: spacing between a toolbutton's icon and its label. + QProgressBar: text color fixed. + +- QCursor + added the What's This? cursor to the collection. + +- QDataTable + fixed broken context menus. + +- QDate + fixed addMonth() overflow. + +- QDesktopWidget + win32 only: works now also for cases where the card handles + multiple monitors and GetSystemMetrics returns a single screen + only. + +- QDomAttr + fixed a memory leak in setNodeValue() + +- QDomNodeMap + added count() as a Qt-style alias for length() + +- QDragObject + default to the middle of the pixmap as a hot spot, this looks + nicer. + +- QFileDialog (internal dialog) + make viewMode() return the correct value even after the dialog + is finished. Fixed getOpenFileName and getSaveFileName for + non-existant directories. Make sure that when it's in + directory mode that the filters reflect this, and change the + label from file name to directory. + win32 only: Improved modality when using the native file + dialog. + +- QFont + x11 only: speed up fontloading with even more clever + caching. Make sure we can match scaled bitmap fonts by + default. Do not load a backup font for a script that is not + default. Make sure the pixel size is correct, even for fonts + that are unavailable. Try even harder to find a fontname that + is not understood. Some RENDER performance optimizations. + +- QFontDialog + make sure the content is set up correctly when initializing + the dialog. + +- QGLWidget + IRIX only: fixed reparent/resize bug, QGLContext::setContext() + is incredibly sensitive on different X servers. + +- QHeader + fixed missing updates on height resp. width changes like the + occur when changing the application font. + +- QIconView + fixed updates of non-auto-arranged views. + +- QImage + no gamma correction by default. + x11 only: some alignment issue with the alpha masked fixed. + +- QIODevice + fixed return value of QIODevice::readLine() for sequential + access. + +- QKeyEvent + win32 only: generate Direction_R/L events for bidirectional + input. + +- QLabel + handle setPixmap( *pixmap() ) gracefully. Apply the WordBreak + alignment flag to both plaintext and richtext. Improved alignment of + richtext labels. Removed some sizepolicy magic, QLabel now + works fine with Preferred/Preferred in all modes. + +- QLineEdit + fixed a crash when doing undo and a validator is set. Emit + textChanged() also if the text changed because of undo or redo. + +- QListBox + fixed RMB context-menu offset. + +- QListView + do not start renaming an item is CTRL or SHIFT is + pressed. Start renaming on mouse release, not mouse press, so + click + click + move on the same item does not start a rename + operation. + +- QMainWindow + show dock-menu also when clicking on the menubar. + +- QPainter + win32 only: improved printing performance through printer font + caching. + boundingRect(): ignore 0-width in the constrain rectangle. + +- QPicture + added overload for load() that takes a QIODevice. + +- QPrintDialog (internal dialog) + fixed enabling of the first page and last page labels. + +- QPrinter + win32 only: make setColorMode() work, some unicode fixes. Make + collate the default. Enable the collate checkbox without + losing the page selection if you want to print multiple + pages. Make the collateCopies property work that it knows + checks/unchecks the collate checkbox in the printing + dialog. Make settings also work when the print dialog is not + shown at all. + +- QProcess + added a new communication mode that duplicates stderr to + stdout (i.e. the equivalent of the shell's 2>&1). + +- QPSPrinter (unix) + fixed collate. + +- QRangeControl + simplified code. + +- QRichText + Propagate WhiteSpaceMode to subitems with + WhiteSpaceModeNormal. Hide DisplayModeNone + items without additional newline. Fixed links inside non-left + aligned tables. Fixed some bidi layout problems. Fixed last + line layout in right-aligned paragraphs. For plain text, + always use the palette's text color. + +- QScrollView + safer destruction. + +- QSettings + win32 only: fixed a dead lock situation when writing + to LOCAL_MACHINE, but reading from CURRENT_USER. + +- QSGIStyle + fixed drawing of checkable menu items. + +- QSimpleRichText + use the specified default font. + +- QSlider + optimized drawing in the new style engine. + +- QString + QString::replace() with a regular expression requires a + QRegExp object, passing a plain string will cause a compile + error. + +- QStyleSheet + additional parameter 'whitespacemode' for + QStyleSheet::convertFromPlainText(). Support for superscript + ('sup') and subscript ( 'sub' ). + +- QTabBar + react properly on runtime font changes, less flicker. + +- QTable + take the pixmap of a header section into account when + adjusting the size. + +- QTabWidget + use the embedded tabbar as focus proxy. + +- QThread + win32 only: possible crash with the thread dictionary fixed. + +- QValidator + In Q{Int,Double}Validator, consider '-' as Invalid rather than + Intermediate if bottom() >= 0. + +- QWidget + made showFullScreen() multihead aware. + win32 only: Better size and position restoring when switching + between fullscreen, maximized and minimized. + x11 only: improvements to XIM, overthespot works correctly + now. + +- QWorkspace + smarter placement of the minimize button when there is no + maximize button. Make titlebars of tool windows a bit smaller. + Improved styleability. Do not maximize a widget that has a + maximum size that is smaller than the workspace. + + + +**************************************************************************** +* Other * +**************************************************************************** + +- moc + fixed generation of uncompilable code in conjunction with + Q_ENUMS and signal/slots. + +- unicode + allow keyboard switching of paragraph directionality. + +- installation + install $QTDIR/doc/html/ instead of $QTDIR/doc/ + install Qt Designer templates as well. + +- improved build on + HP-UX with cc. + Solaris 8 with gcc 3.0.1. + AIX with xlC and aCC. + +- inputmethods + x11 only: do not reset the input context on focus changes. + +- uic + smaller improvements, handle additional form signals. + +- Qt Designer + make it possible to add new signals to a form without + subclassing. Minor fixes. + +- Qt Assistant + fixed Shift-LMB selection bug. Fixed new window and window + restoration on restart. + +- Qt Linguist + change fourth parameter of QApplication::translate() from bool + to enum type. This affects MOC (new revision) and lupdate (new + syntax to parse). Change Qt Linguist's XML file format (.ts) + to be consistent with QApplication:<defaultcodec> (rather than + <codec>) to match QApp::defaultCodec(); encoding="UTF-8" + (rather than utf8="true") to match QApp::translate(). Fixed + window decoration on restart. Use 'finished', 'unfinished' and + 'unresolved' instead of the (!), (?) symbols on printouts. + +- QMsDev + merge "Add UIC" and "New Dialog". Better user interface and + general cleanup. Wwrite (and merge) qmake pro file with active + project. Load qmake pro files into Visual Studio. + + |