Don't check for null if never happens, but test it if it may...
[qt-netbsd.git] / dist / changes-3.0.0-beta1
blobe351ed15985aa39a3183d94806ff7f8ed7f747b5
1 Qt 3.0 adds a lot of new features and improvements over the Qt 2.x
2 series. Some internals have undergone major redesign and new classes
3 and methods have been added.
5 We have tried to keep the API of Qt 3.0 as compatible as possible with
6 the Qt 2.x series. For most applications only minor changes will be
7 needed to compile and run them successfully using Qt 3.0.
9 One of the major new features that has been added in the 3.0 release
10 is a module allowing you to easily work with databases. The API is
11 platform independent and database neutral. This module is seamlessly
12 integrated into Qt Designer, greatly simplifying the process of
13 building database applications and using data aware widgets.
15 Other major new features include a component architecture allowing you
16 to build cross platform components, 'plugins' with Qt. You can use
17 your own and third party plugins your own applications. The Unicode
18 support of Qt 2.x has been greatly enhanced, it now includes full
19 support for scripts written from right to left (e.g. Arabic and
20 Hebrew) and also provides improved support for Asian languages.
22 Many new classes have been added to the Qt Library. Amongst them are
23 classes that provide a docking architecture (QDockArea/QDockWindow), a
24 powerful rich text editor (QTextEdit), a class to store and access
25 application settings (QSettings) and a class to create and communicate
26 with processes (QProcess).
28 Apart from the changes in the library itself a lot has been done to
29 make the development of Qt applications with Qt 3.0 even easier than
30 before. Two new applications have been added: Qt Linguist is a tool to
31 help you translate your application into different languages; Qt
32 Assistant is an easy to use help browser for the Qt documentation that
33 supports bookmarks and can search by keyword.
35 Another change concerns the Qt build system, which has been reworked
36 to make it a lot easier to port Qt to new platforms. You can use this
37 platform independent build system for your own applications.
40 The Qt Library
41 ========================================
43 A large number of new features has been added to Qt 3.0. The following
44 list gives an overview of the most important new and changed aspects
45 of the Qt library. A full list of every new method follows the
46 overview.
49 Database support
50 ----------------
52 One of the major new features in Qt 3.0 is the SQL module that
53 provides cross-platform access to SQL databases, making database
54 application programming with Qt seamless and portable. The API, built
55 with standard SQL, is database-neutral and software development is
56 independent of the underlying database.
58 A collection of tightly focused C++ classes are provided to give the
59 programmer direct access to SQL databases. Developers can send raw SQL
60 to the database server or have the Qt SQL classes generate SQL queries
61 automatically.  Drivers for Oracle, PostgreSQL, MySQL and ODBC are
62 available and writing new drivers is straightforward.
64 Tying the results of SQL queries to GUI components is fully supported
65 by Qt's SQL widgets. These classes include a tabular data widget
66 (for spreadsheet-like data presentation with in-place editing), a
67 form-based data browser (which provides data navigation and edit
68 functions) and a form-based data viewer (which provides read-only
69 forms). This framework can be extended by using custom field editors,
70 allowing for example, a data table to use custom widgets for in-place
71 editing. The SQL module fully supports Qt's signal/slots mechanism,
72 making it easy for developers to include their own data validation and
73 auditing code.
75 Qt Designer fully supports Qt's SQL module. All SQL widgets can be
76 laid out within Qt Designer, and relationships can be established
77 between controls visually. Many interactions can be defined purely in
78 terms of Qt's signals/slots mechanism directly in Qt Designer.
81 Component model - plugins
82 -------------------------
84 The QLibrary class provides a platform independent wrapper for runtime
85 loading of shared libraries. Access to the shared libraries uses a
86 COM-like interface. QPluginManager makes it trivial to implement
87 plugin support in applications. The Qt library is able to load
88 additional styles, database drivers and text codecs from plugins which
89 implement the relevant interfaces, e.g. QStyleFactoryInterface,
90 QSqlDriverInterface or QTextCodecInterface. It is possible to remove
91 unused components from the Qt library, and easy to extend any
92 application with 3rd party styles, database drivers or text codecs.
94 Qt Designer supports custom widgets in plugins, and will use the
95 widgets both when designing and previewing forms.
97 QComponentFactory makes it easy to register any kind of component in a
98 global database (e.g. the Windows Registry) and to use any registered
99 component.
102 Rich text engine and editor
103 ---------------------------
105 The rich text engine originally introduced in Qt 2.0 has been further
106 optimized and extended to support editing. It allows editing formatted
107 text with different fonts, colors, paragraph styles, tables and
108 images. The editor supports different word wrap modes, command-based
109 undo/redo, multiple selections, drag and drop, and many other
110 features.  The engine is highly optimized for proccesing and displaying
111 large documents quickly and efficiently.
114 Unicode
115 -------
117 Apart from the rich text engine, another new feature of Qt 3.0 that
118 relates to text handling is the greatly improved Unicode support. Qt
119 3.0 includes an implementation of the bidirectional algorithm (BiDi)
120 as defined in the Unicode standard and a shaping engine for Arabic,
121 which gives full native language support to Arabic and Hebrew speaking
122 people. At the same time the support for Asian languages has been
123 greatly enhanced.
125 The support is almost transparent for the developer using Qt to
126 develop their applications. This means that developers who developed
127 applications using Qt 2.x will automatically gain the full support for
128 these languages when switching to Qt 3.0. Developers can rely on their
129 application to work for people using writing systems different from
130 Latin1, without having to worry about the complexities involved with
131 these scripts, as Qt takes care of this automatically.
134 Docked and Floating Windows
135 ---------------------------
137 Qt 3.0 introduces the concept of Dock Windows and Dock Areas. Dock
138 windows are widgets, that can be attached to, and detached from, dock
139 areas. The commonest kind of dock window is a tool bar. Any number of
140 dock windows may be placed in a dock area. A main window can have dock
141 areas, for example, QMainWindow provides four dock areas (top, left,
142 bottom, right) by default. The user can freely move dock windows and
143 place them at a convenient place in a dock area, or drag them out of
144 the application and have them float freely as top level windows in
145 their own right. Dock windows can also be minimized or hidden.
147 For developers, dock windows behave just like ordinary widgets. QToolbar
148 for example is now a specialized subclass of a dock window.  The API
149 of QMainWindow and QToolBar is source compatible with Qt 2.x, so
150 existing code which uses these classes will continue to work.
153 Regular Expressions
154 -------------------
156 Qt has always provided regular expression support, but that support
157 was pretty much limited to what was required in common GUI control
158 elements such as file dialogs. Qt 3.0 introduces a new regular
159 expression engine that supports most of Perl's regex features and is
160 Unicode based. The most useful additions are support for parentheses
161 (capturing and non-capturing) and backreferences.
164 Storing application settings
165 ----------------------------
167 Most programs will need to store some settings between runs, for
168 example, user selected fonts, colors and other preferences, or a list
169 of recently used files.  The new QSettings class provides a platform
170 independent way to achieve this goal. The API makes it easy to store
171 and retrieve most of the basic data types used in Qt (such as basic
172 C++ types, strings, lists, colors, etc). The class uses the registry
173 on the Windows platform and traditional resource files on Unix.
176 Creating and controlling other processes
177 ----------------------------------------
179 QProcess is a class that allows you to start other programs from
180 within a Qt application in a platform independent manner. It gives you
181 full control over the started program, for example you can redirect
182 the input and output of console applications.
185 Accessibility (not part of the beta1 release)
186 ---------------------------------------------
188 Accessibility means making software usable and accessible to a wide
189 range of users, including those with disabilities. In Qt 3.0, most
190 widgets provide accessibility information for assistive tools that can
191 be used by a wide range of disabled users. Qt standard widgets like
192 buttons or range controls are fully supported. Support for complex
193 widgets, like e.g. QListView, is in development. Existing applications
194 that make use of standard widgets will become accessible just by using
195 Qt 3.0.
197 Qt uses the Active Accessibility infrastructure on Windows, and needs
198 the MSAA SDK, which is part of most platform SDKs. With improving
199 standardization of accessibility on other platforms, Qt will support
200 assistive technologies on other systems, too.
202 The accessibility API in Qt is not yet stable, which is why we decided
203 not to make it a part of the beta1 release.
206 XML Improvements
207 ----------------
209 The XML framework introduced in Qt 2.2 has been vastly improved. Qt
210 2.2 already supported level 1 of the Document Object Model (DOM), a
211 W3C standard for accessing and modifying XML documents.  Qt 3.0 has
212 added support for DOM Level 2 and XML namespaces.
214 The XML parser has been extended to allow incremental parsing of XML
215 documents. This allows you to start parsing the document directly
216 after the first parts of the data have arrived, and to continue
217 whenever new data is available.  This is especially useful if the XML
218 document is read from a slow source, e.g. over the network, as it
219 allows the application to start working on the data at a very early
220 stage.
223 SVG support
224 -----------
226 SVG is a W3C standard for "Scalable Vector Graphics". Qt 3.0's SVG
227 support means that QPicture can optionally generate and import static
228 SVG documents. All the SVG features that have an equivalent in
229 QPainter are supported.
232 Multihead support
233 -----------------
235 Many professional applications, such as DTP and CAD software, are able
236 to display data on two or more monitors. In Qt 3.0 the QDesktopWidget
237 class provides the application with runtime information about the
238 number and geometry of the desktops on the different monitors and such
239 allows applications to efficiently use a multi-monitor setup.
241 The virtual desktop of Windows 98 and 2000 is supported, as well as
242 the traditional multi-screen and the newer Xinerama multihead setups
243 on X11.
246 X11 specific enhancements
247 -------------------------
249 Qt 3.0 now complies with the NET WM Specification, recently adopted
250 by KDE 2.0.  This allows easy integration and proper execution with
251 desktop environments that support the NET WM specification.
253 The font handling on X11 has undergone major changes.  QFont no longer
254 has a one-to-one relation with window system fonts.  QFont is now a
255 logical font that can load multiple window system fonts to simplify
256 Unicode text display.  This completely removes the burden of
257 changing/setting fonts for a specific locale/language from the
258 programmer.  For end-users, any font can be used in any locale.  For
259 example, a user in Norway will be able to see Korean text without
260 having to set their locale to Korean.
262 Qt 3.0 also supports the new render extension recently added to
263 XFree86. This adds support for anti aliased text and pixmaps with
264 alpha channel (semi transparency) on the systems that support the
265 rendering extension (at the moment XFree 4.0.3 and later).
268 Printing
269 --------
271 Printing support has been enhanced on all platforms. The QPrinter
272 class now supports setting a virtual resolution for the painting
273 process. This makes WYSIWYG printing trivial, and also allows you to
274 take full advantage of the high resolution of a printer when painting
275 on it.
277 The postscript driver built into Qt and used on Unix has been greatly
278 enhanced. It supports the embedding of true/open type and type1 fonts
279 into the document, and can correctly handle and display Unicode.
280 Support for fonts built into the printer has been enhanced and Qt now
281 knows about the most common printer fonts used for Asian languages.
284 QHttp
285 -----
287 This class provides a simple interface for HTTP downloads and uploads.
290 Compatibility with the Standard Template Library (STL)
291 ------------------------------------------------------
293 Support for the C++ Standard Template Library has been added to the Qt
294 Template Library (QTL).  The QTL classes now contain appropriate copy
295 constructors and typedefs so that they can be freely mixed with other
296 STL containers and algorithms.  In addition, new member functions have
297 been added to QTL template classes which correspond to STL-style
298 naming conventions (e.g., push_back()).
301 Qt Designer
302 ========================================
304 Qt Designer was a pure dialog editor in Qt 2.2 but has now been
305 extended to provide the full functionality of a GUI design tool.
307 This includes the ability to lay out main windows with menus and
308 toolbars. Actions can be edited within Qt Designer and then plugged
309 into toolbars and menu bars via drag and drop. Splitters can now be
310 used in a way similar to layouts to group widgets horizontally or
311 vertically.
313 In Qt 2.2, many of the dialogs created by Qt Designer had to be
314 subclassed to implement functionality beyond the predefined signal and
315 slot connections. Whilst the subclassing approach is still fully supported,
316 Qt Designer now offers an alternative: a plugin for editing 
317 slots. The editor offers features such as syntax highlighting,
318 completion, parentheses matching and incremental search.
320 The functionality of Qt Designer can now be extended via plugins.
321 Using Qt Designer's interface or by implementing one of the provided
322 interfaces in a plugin, a two way communication between plugin and Qt
323 Designer can be established. This functionality is used to implement
324 plugins for custom widgets, so that they can be used as real widgets
325 inside the designer.
327 Basic support for project management has been added. This allows you
328 to read and edit *.pro files, add and remove files to/from the project
329 and do some global operations on the project. You can now open the
330 project file and have one-click access to all the *.ui forms in the
331 project.
333 In addition to generating code via uic, Qt Designer now supports the
334 dynamic creation of widgets directly from XML user interface
335 description files (*.ui files) at runtime. This eliminates the need of
336 recompiling your application when the GUI changes, and could be used
337 to enable your customers to do their own customizations. Technically,
338 the feature is provided by a new class, QWidgetFactory in the
339 QResource library.
342 Qt Linguist
343 ========================================
345 Qt Linguist is a GUI utility to support translating the user-visible
346 text in applications written with Qt. It comes with two command-line
347 tools: lupdate and lrelease.
349 Translation of a Qt application is a three-step process:
351   1) Run lupdate to extract user-visible text from the C++ source
352      code of the Qt application, resulting in a translation source file
353      (a *.ts file).
354   2) Provide translations for the source texts in the *.ts file using
355      Qt Linguist.
356   3) Run lrelease to obtain a light-weight message file (a *.qm file)
357      from the *.ts file, which provides very fast lookup for released
358      applications.
360 Qt Linguist is a tool suitable for use by translators. Each
361 user-visible (source) text is characterized by the text itself, a
362 context (usually the name of the C++ class containing the text), and
363 an optional comment to help the translator. The C++ class name will
364 usually be the name of the relevant dialog, and the comment will often
365 contain instructions that describe how to navigate to the relevant
366 dialog.
368 You can create phrase books for Qt Linguist to provide common
369 translations to help ensure consistency and to speed up the
370 translation process. Whenever a translator navigates to a new text to
371 translate, Qt Linguist uses an intelligent algorithm to provide a list
372 of possible translations: the list is composed of relevant text from
373 any open phrase books and also from identical or similar text that has
374 already been translated.
376 Once a translation is complete it can be marked as "done"; such
377 translations are included in the *.qm file. Text that has not been
378 "done" is included in the *.qm file in its original form. Although Qt
379 Linguist is a GUI application with dock windows and mouse control,
380 toolbars, etc., it has a full set of keyboard shortcuts to make
381 translation as fast and efficient as possible.
383 When the Qt application that you're developing evolves (e.g. from
384 version 1.0 to version 1.1), the utility lupdate merges the source
385 texts from the new version with the previous translation source file,
386 reusing existing translations. In some typical cases, lupdate may
387 suggest translations. These translations are marked as unfinished, so
388 you can easily find and check them.
391 Qt Assistant
392 ========================================
394 Due to the positive feedback we received about the help system built
395 into Qt Designer, we decided to offer this part as a separate
396 application called Qt Assistant. Qt Assistant can be used to browse
397 the Qt class documentation as well as the manuals for Qt Designer and
398 Qt Linguist. It offers index searching, a contents overview, bookmarks
399 history and incremental search. Qt Assistant is used by both Qt
400 Designer and Qt Linguist for browsing their help documentation.
403 QMake
404 ========================================
406 To ease portability we now provide the qmake utility to replace tmake.
407 QMake is a C++ version of tmake which offers additional functionallity
408 that is difficult to reproduce in tmake. Qt uses qmake in its
409 build system and we have released it as free software.
412 Qt Functions
413 ========================================
415 QAction
416 -------
418 All new functions:
419         void addedTo( QWidget *actionWidget, QWidget *container );
420         void addedTo( int index, QPopupMenu *menu );
422 QActionGroup
423 ------------
425 New mode "uses drop down", where members are shown in a separate
426 subwidget such as a combobox or a submenu (enable with
427 setUsesDropDown(TRUE) )
429 All new functions:
430         void add(QAction*);
431         void addSeparator();
432         void addedTo( QWidget *actionWidget, QWidget *container, QAction *a );
433         void addedTo( int index, QPopupMenu *menu, QAction *a );
434         void setUsesDropDown( bool enable );
435         bool usesDropDown() const;
438 QApplication
439 ------------
441 Added the setStyle(const QString&) overload that takes the name of the
442 style as its argument. This loads a style plugin via a QStyleFactory.
444 desktop() now returns a QDesktopWidget that provides access to
445 multi-head information. Prior to 3.0, it returned a normal QWidget.
447 New functions to define the library search path for plugins
448 (setLibraryPaths, ...).
450 New functions to define reverse layout for bidirectional languages
451 (setReverseLayout, ...).
453 All new functions:
454         bool hasPendingEvents()
456         void setLibraryPaths(const QStringList &);
457         QStringList libraryPaths();
458         void addLibraryPath(const QString &);
459         void removeLibraryPath(const QString &);
461         void setReverseLayout( bool b );
462         bool reverseLayout();
463         int horizontalAlignment( int align );
467 QClipboard
468 ----------
470 On systems that support it, for example X11, QClipboard now
471 differentiates between the primary selection and the data in the clipboard.
473 All new functions:
474         bool supportsSelection() const;
475         bool ownsClipboard() const;
476         void setSelectionMode(bool enable);
477         bool selectionModeEnabled() const;
478 New signals:
479         void selectionChanged()
480         
483 QCursor
484 -------
486 Now inherits Qt namespace. Enum values like ArrowCursor,
487 UpArrowCursor, CrossCursor etc. are now part of that namespace.
490 QDataStream
491 -----------
493 Added missing operators for Q_LONG and Q_ULONG
496 QDateTime / QDate / QTime
497 -------------------------
499 More sophisticated toString() function that takes a DateFormat, where
500 DateFormat can be either TextDate (the default), ISODate (ISO 8601) or
501 LocalDate (locale dependent).
503 All new functions:
504         QDate addMonths( int months ) const;
505         QDate addYears( int years ) const;
506         QDate fromString( const QString& s, Qt::DateFormat f = Qt::TextDate );
507         static QString shortMonthName( int month );
508         static QString longMonthName( int month );
509         static QString shortDayName( int weekday );
510         static QString longDayName( int weekday );
511         static void setShortMonthNames( const QStringList& names );
512         static void setLongMonthNames( const QStringList& names );
513         static void setShortDayNames( const QStringList& names );
514         static void setLongDayNames( const QStringList& names );
516 QDialog
517 -------
519 Merged with QSemiModal. Calling show() on a modal dialog will return
520 immediately, not enter a local event loop. Showing a modal dialog in
521 its own event loop is achieved using exec().
523 exec() is now a public slot.
525 Usability: For widgets supporting What's This help, QDialog
526 automatically offers a context menu containing a "What's This?" entry.
529 QEvent
530 ------
532 Mouse events are now propagated up to the toplevel widget if no widget
533 accepts them and no event filter filters them out. In previous Qt
534 versions, only key events were propagated.
536 All events carry a flag 'spontaneous' to determine whether the even
537 came from the outside or was generated by code within the
538 applications. Previously, only show and hide events had this flag.
540 Enter/Leave event generation has been fixed. Previously, a widget
541 received a leave event when the mouse pointer entered one of its
542 children. This was both unnatural and contradictive to the
543 documentation.
545 QWheelevent now carries an orientation to differentiate between
546 horizontal and vertical wheels.
548 QFocusEvent: new reason 'Backtab' (previously only 'Tab' was
549 available). This makes it possible to discover from what direction on
550 the tab-focus chain the widget was entered.
552 New events: QContextMenuEvent, QIMEvent
555 QFile
556 -----
558 Ported from int to Q_LONG to prepare for large file sizes on 64 bit
559 systems.
561 Filter handling made more flexible.
564 QFileDialog
565 -----------
567 All new Functions:
568         void setSelectedFilter( const QString& );
569         void setSelectedFilter( int );
570 New signals:
571         void filesSelected( const QStringList& );
572         void filterSelected( const QString& );
574 If you try to specify an invalid file when using getOpenFileName(s), an error message
575 will appear and the file will not be accepted.  In 2.x, this function behaved differently
576 because users were using getOpenFileName(s) as a Save File Dialog; you should use
577 getSaveFileName() when you require a Save File Dialog.  
580 QCanvas Module
581 --------------
583         New classes:
584                 QCanvasSpline - a multi-bezier spline
586         QCanvasItemList
587                 void update();
589         QCanvas:
590                 QRect rect() const;
591                 void setUnchanged( const QRect& area );
592                 void drawArea(const QRect&, QPainter* p, bool double_buffer);
593                 void drawViewArea( QCanvasView* view, QPainter* p, const QRect& r, bool dbuf );
594                 QRect changeBounds(const QRect& inarea);
596         QCanvasView:
597                 const QWMatrix &worldMatrix() const;
598                 const QWMatrix &inverseWorldMatrix() const;
599                 void setWorldMatrix( const QWMatrix & );
600         QCanvasSprite:
601                 int leftEdge() const;
602                 int topEdge() const;
603                 int rightEdge() const;
604                 int bottomEdge() const;
605                 int leftEdge(int nx) const;
606                 int topEdge(int ny) const;
607                 int rightEdge(int nx) const;
608                 int bottomEdge(int ny) const;
610 QCanvasSprite can now be set to animate its frames without the need to
611 subclass.
614 QFont, QFontDatabase, QFontInfo, QFontMetrics
615 ---------------------------------------------
617 The QFont::CharSet enum has been removed and replaced with the
618 QFont::Script enum. With this change, a QFont is not associated with a
619 specific character set. Instead, QFont uses Unicode Scripts for
620 loading fonts.  On platforms where most fonts do not use the Unicode
621 encoding (currently only X11), multiple locale and character-set
622 dependent fonts can be loaded for the individual Unicode Scripts.
624 Another new feature of QFont is a much more flexible substitution
625 mechanism. Each family can have a list of appropriate substitutes. The
626 font substitution feature allows you to specify a list of substitute
627 fonts. Substitute fonts are used when a font cannot be loaded, or if
628 the specified font doesn't have a particular character (X11 only).
630 For example (on X11), you select the font Lucida, which doesn't have
631 Korean characters. For Korean text, you want to use the Mincho font
632 family. By adding Mincho to the list, any Korean characters not found
633 in Lucida will be used from Mincho. Because the font substitutions are
634 lists, you can also select multiple families, such as Song Ti (for use
635 with Chinese text).
637 QFontInfo and QFontMetrics had small API changes related to the
638 disappearance of QFont::CharSet.  In terms of functionality, the
639 behavior of these classes is unchanged.
641 QFontDatabase had several API cleanups related to the disappearance of
642 QFont::CharSet.  Most QFontDatabase member functions take one less
643 argument, yet compatibility functions still exist to keep old source
644 code working.
646 Family and style names returned from QFontDatabase are now processed
647 and formatted in a way that is suitable for display to users.  Family
648 and foundry names are capitalized and foundry names are enclosed in
649 square brackets after the family name.  For example, the Helvetica
650 font family might have 3 different foundries: Adobe, Cronyx and
651 Phaisarn. In 2.x, QFontDatabase listed them like this:
653         adobe-helvetica
654         cronyx-helvetica
655         phaisarn-helvetica
657 Starting with 3.0, QFontDatabase lists them like this:
659         Helvetica [Adobe]
660         Helvetica [Cronyx]
661         Helvetica [Phaisarn]
664 QFrame
665 ------
667 Two new frame shapes for more sophisticated style features:
668 MenuBarPanel and ToolBarPanel.
671 QGrid
672 -----
674 The member type
676     enum Direction { Horizontal, Vertical };
678 has been eliminated, as it is redundant: use Qt::Orientation instead.
679 Old code referring to QGrid::Horizontal or QGrid::Vertical will still
680 work, as QGrid counts Qt among its ancestors.
683 QGroupBox
684 ---------
686 More functionality of the built-in layout is exposed:
688         int insideMargin() const;
689         int insideSpacing() const;
690         void setInsideMargin( int m );
691         void setInsideSpacing( int s );
694 QHeader
695 -------
697 New property: bool stretching
699 New functions:
700         bool isStretchEnabled( int section );
701         void setStretchEnabled( bool b, int section );
702         
704 QIconSet
705 --------
707 In addition to the mode - which can be either Normal, Disabled or
708 Active - QIconSet now supports different pixmaps for a state, i.e. On
709 or Off. The functions pixmap() and setPixmap() have been extended
710 accordingly.
712 The default constructor no longer initializes the iconset to
713 contain a null pixmap. QIconSet::isNull() returns TRUE for un-
714 initialized iconsets, and pixmap() still returns a null pixmap for
715 pixmaps that couldn't be generated.
718 QIconView
719 ---------
721 Extended findItem() to support ComparisonFlags. Support for
722 soft-hyphens when doing word wrap.
724 New signal:
725         contextMenuRequested( QIconViewItem*, const QPoint& pos);
728 QIconViewItem
729 -------------
731 Added support for explicit rtti.
733 New function:
734         int rtti() const;
738 QListBox
739 --------
741 Extended findItem() to support ComparisonFlags.
743 New signal:
744         void contextMenu( QListBoxItem *, const QPoint & );
747 QListBoxItem
748 ------------
750 Added support for explicit rtti.
752 New function:
753         int rtti() const;
757 QListView
758 ---------
760 It was never really hard to implement drag and drop with QListView,
761 but since many applications demand this functionality today, we
762 decided to add it to the listview itself.
764 In addition, in-place editing and per-item tooltips have been added.
765 Extended findItem() to support ComparisonFlags
767 New properties:
768         bool showToolTips
769         ResizeMode resizeMode
771 New signals:
772         contextMenuRequested( QIconViewItem*, const QPoint& pos);
773         void dropped( QDropEvent *e );
774         void itemRenamed( QListViewItem *item, int col, const QString & );
775         void itemRenamed( QListViewItem *item, int col  );
777 New functions:
778         void setResizeMode( ResizeMode m );
779         ResizeMode resizeMode() const;
780         QDragObject *dragObject();
781         void startDrag();
782         void startRename();
785 QListViewItem
786 -------------
788 Added support for explicit rtti.
790 New functions:
791         void setDragEnabled( bool allow );
792         void setDropEnabled( bool allow );
793         bool dragEnabled() const;
794         bool dropEnabled() const;
795         bool acceptDrop( const QMimeSource *mime ) const;
796         void setVisible( bool b );
797         bool isVisible() const;
798         void setRenameEnabled( int col, bool b );
799         bool renameEnabled( int col ) const;
800         void startRename( int col );
801         void setEnabled( bool b );
802         bool isEnabled() const;
803         int rtti() const;
805         void dropped( QDropEvent *e );
806         void dragEntered();
807         void dragLeft();
808         void okRename( int col );
809         void cancelRename( int col );
812 QLabel
813 ------
815 In addition to text, rich text, pixmaps and movies, QLabel can now
816 display QPicture vector graphics.
818 New functions:
820         QPicture *picture() const;
821         void setPicture( const QPicture & );
824 QLineEdit
825 ---------
827 New property: bool dragEnabled
829 New signal:
830         contextMenuRequested( QIconViewItem*, const QPoint& pos);
832 New functions:
833         void cursorForward( bool mark, int steps = 1 );
834         void cursorBackward( bool mark, int steps = 1 );
835         void cursorWordForward( bool mark );
836         void cursorWordBackward( bool mark );
837         bool dragEnabled();
838         void setDragEnabled( bool b );
841 QMainWindow
842 -----------
844 Added a dock window architecture. Previous versions of QMainWindow
845 could only deal with toolbars, now they handle generalized dock
846 windows. QToolBar inherits QDockWindow.
849 New property:
850         bool dockWindowsMovable;
852 New signals:
853         void dockWindowPositionChanged( QDockWindow * );
855 New functions:
856         void setDockEnabled( Dock dock, bool enable );
857         bool isDockEnabled( Dock dock ) const;
858         bool isDockEnabled( QDockArea *area ) const;
859         void setDockEnabled( QDockWindow *tb, Dock dock, bool enable );
860         bool isDockEnabled( QDockWindow *tb, Dock dock ) const;
861         bool isDockEnabled( QDockWindow *tb, QDockArea *area ) const;
863         void addDockWindow( QDockWindow *, Dock = Top, bool newLine = FALSE );
864         void addDockWindow( QDockWindow *, const QString &label, Dock = Top, bool newLine = FALSE );
865         void moveDockWindow( QDockWindow *, Dock = Top );
866         void moveDockWindow( QDockWindow *, Dock, bool nl, int index, int extraOffset = -1 );
867         void removeDockWindow( QDockWindow * );
869         QDockArea *dockingArea( const QPoint &p );
870         QDockArea *leftDock() const;
871         QDockArea *rightDock() const;
872         QDockArea *topDock() const;
873         QDockArea *bottomDock() const;
874         
875         bool isCustomizable() const;
876         bool appropriate( QDockWindow *dw ) const;
877         QPopupMenu *createDockWindowMenu( DockWindows dockWindows = AllDockWindows ) const;
879         bool showDockMenu( const QPoint &globalPos );
882 QMetaObject
883 -----------
885 ###TODO
888 QMimeSourceFactory
889 ------------------
891 New static functions:
892         QMimeSourceFactory* takeDefaultFactory();
893         static void addFactory( QMimeSourceFactory *f );
896 QNetworkProtocol
897 ----------------
899 Spelling fix in Error::ErrListChildren enum.
902 QRegExp
903 -------
905 QRegExp now has a more complete regular expression engine similar to
906 Perl's, with full Unicode and backreference support.
908 New functions:
909         bool minimal() const;
910         void setMinimal( bool minimal );
911         bool exactMatch( const QString& str );
912         bool exactMatch( const QString& str ) const;
913         int search( const QString& str, int start = 0 );
914         int search( const QString& str, int start = 0 ) const;
915         int searchRev( const QString& str, int start = -1 );
916         int searchRev( const QString& str, int start = -1 ) const;
917         int matchedLength();
918         QStringList capturedTexts();
919         QString cap( int nth = 0 );
920         int pos( int nth = 0 );
923 QSessionManager
924 ---------------
926 Renamed the misnamed setProperty() overloads to setManagerProperty()
927 to resolve the conflict with the now virtual QObject::setProperty().
930 QString
931 -------
933 New functions:
934         bool endsWith( const QString & );
935         int similarityWith( const QString & );
937 ### TODO
939 QStyle
940 ------
942 ### TODO
944 QTabBar
945 -------
947 The extended QTabWidget support in Qt Designer made two more
948 functions handy to have:
949         QTab * tabAt( int ) const;
950         int indexOf( int ) const;
954 QToolBar
955 --------
957 Inherits QDockWindow now, previously only QWidget.
960 QToolButton
961 -----------
963 New property:
964         QIconSet iconSet
966 New functions:
967         QIconSet iconSet() const;
968         virtual void setIconSet( const QIconSet & );
970 QWidget
971 -------
973 New functions:
975     const QColor & eraseColor() const;
976     virtual void setEraseColor( const QColor & );
977     const QPixmap * erasePixmap() const;
978     virtual void setErasePixmap( const QPixmap & );
982 QWizard
983 -------
985 New property: QString titleFont
987 New functions:
988         QFont titleFont() const;
989         void setTitleFont( const QFont & );
990         int indexOf( QWidget* ) const;
993 QWMatrix
994 --------
996 New function:
997         bool isIdentity() const;
998         
1000 QGL Module
1001 ----------
1003 QGLWidget
1004 New functions:
1005         QGLFormat requestedFormat() const;
1006         QImage grabFrameBuffer( bool withAlpha = FALSE );
1009 QWorkspace Module
1010 -----------------
1012 A new property scrollBarsEnabled makes it possible to add on-demand
1013 scrollbars to the workspace. We define this property in Qt Designer to
1014 make designing forms larger than the available space on the desktop
1015 more comfortable.
1017 New property:
1018         bool scrollBarsEnabled
1021 QXML Module
1022 -----------
1023 Many new functions have been added:
1024         QDomImplementation
1025                 QDomDocumentType createDocumentType( const QString& qName, const QString& publicId, const QString& systemId );
1026                 QDomDocument createDocument( const QString& nsURI, const QString& qName, const QDomDocumentType& doctype );
1027         QDomNode
1028                 QDomNode insertBefore( const QDomNode& newChild, const QDomNode& refChild );
1029                 QDomNode insertAfter( const QDomNode& newChild, const QDomNode& refChild );
1030                 QDomNode replaceChild( const QDomNode& newChild, const QDomNode& oldChild );
1031                 QDomNode removeChild( const QDomNode& oldChild );
1032                 QDomNode appendChild( const QDomNode& newChild );
1033                 bool hasChildNodes() const;
1034                 QDomNode cloneNode( bool deep = TRUE ) const;
1035                 void normalize();
1036                 bool isSupported( const QString& feature, const QString& version ) const;
1037                 QString namespaceURI() const;
1038                 QString localName() const;
1039                 bool hasAttributes() const;
1040         QDomDocument
1041                 bool setContent( const QCString& text, bool namespaceProcessing=FALSE );
1042                 bool setContent( const QByteArray& text, bool namespaceProcessing=FALSE );
1043                 bool setContent( const QString& text, bool namespaceProcessing=FALSE );
1044                 bool setContent( QIODevice* dev, bool namespaceProcessing=FALSE );
1045         QDomNamedNodeMap
1046                 QDomNode namedItemNS( const QString& nsURI, const QString& localName ) const;
1047                 QDomNode setNamedItemNS( const QDomNode& newNode );
1048                 QDomNode removeNamedItemNS( const QString& nsURI, const QString& localName );
1050         QDomElement
1051                 QString attributeNS( const QString nsURI, const QString& localName, const QString& defValue ) const;
1052                 void setAttributeNS( const QString nsURI, const QString& qName, const QString& value );
1053                 void setAttributeNS( const QString nsURI, const QString& qName, int value );
1054                 void setAttributeNS( const QString nsURI, const QString& qName, uint value );
1055                 void setAttributeNS( const QString nsURI, const QString& qName, double value );
1056                 void removeAttributeNS( const QString& nsURI, const QString& localName );
1057                 QDomAttr attributeNodeNS( const QString& nsURI, const QString& localName );
1058                 QDomAttr setAttributeNodeNS( const QDomAttr& newAttr );
1059                 QDomNodeList elementsByTagNameNS( const QString& nsURI, const QString& localName ) const;
1060                 bool hasAttributeNS( const QString& nsURI, const QString& localName ) const;
1062         
1063         QXmlAttributes
1064                 void clear();
1065                 void append( const QString &qName, const QString &uri, const QString &localPart, const QString &value );
1067         QXmlInputSource:
1068                 void setData( const QByteArray& dat );
1069                 void fetchData();
1070                 QString data();
1071                 QChar next();
1072                 void reset();
1073                 QString fromRawData( const QByteArray &data, bool beginning = FALSE );
1075         QXmlSimpleReader:
1076                 bool parse( const QXmlInputSource& input, bool incremental );
1077                 bool parseContinue();
1079         QXmlEntityResolver:
1080                 bool startEntity( const QString& name );
1081                 bool endEntity( const QString& name );
1083         
1085 New classes
1086 -----------
1088 QAquaStyle (only on MacOS X)
1089 QCleanupHandler
1090 QComponentFactory
1091 QComponentFactoryInterface
1092 QComponentServerInterface
1093 QContextMenuEvent
1094 QDesktopWidget
1095 QDockArea
1096 QDockWindow
1097 QErrorMessage
1098 QFeatureListInterface
1099 QHttp [network]
1100 QInterfaceListInterface
1101 QInterfacePtr
1102 QIMEvent
1103 QLibrary
1104 QLibraryInterface
1105 QStyleFactory
1106 QStyleInterface
1107 QTextCodecInterface
1108 QUnknownInterface
1109 QUuid
1110 QRegExpValidator
1111 QTextEdit
1114 Renamed Classes
1115 ---------------
1117 QArray has been renamed QMemArray
1118 QCollection has been renamed QPtrCollection
1119 QList has been renamed QPtrList
1120 QListIterator has been renamed QPtrListIterator
1121 QQueue has been renamed QPtrQueue
1122 QStack has been renamed QPtrStack
1123 QVector has been renamed QPtrVector
1125 The include file names have changed accordingly (e.g., <qmemarray.h>).
1128 New Modules
1129 -----------
1132         QDataBrowser
1133         QDataTable
1134         QDataView
1135         QDateTimeEdit
1136         QEditFactory
1139 Obsolete classes
1140 ----------------
1142         QSemiModal, use QDialog instead.
1143         QMultiLineEdit, use QTextEdit instead.
1144         QTableView, use QScrollView or QTable instead.
1145         QAsyncIO, QDataSink, QDataSource, QDataPump and QIODeviceSource
1148 Obsolete functions
1149 ------------------
1150         QActionGroup::insert( QAction * ),  use QActionGroup::add( QAction* ) instead.
1151         QApplication::setWinStyleHighlightColor( const QColor &c ), use setPalette() instead
1152         QApplication::winStyleHighlightColor(), use palette() instead
1153         QDir::encodedEntryList( int filterSpec, int sortSpec ), use QDir::entryList() instead
1154         QDir::encodedEntryList( const QString &nameFilter, int filterSpec, int sortSpec ), use QDir::entryList() instead
1155         QMainWindow::addToolBar( QDockWindow *, Dock = Top, bool newLine = FALSE );
1156         QMainWindow::addToolBar( QDockWindow *, const QString &label,  Dock = Top, bool newLine = FALSE );
1157         QMainWindow::moveToolBar( QDockWindow *, Dock = Top );
1158         QMainWindow::moveToolBar( QDockWindow *, Dock, bool nl, int index, int extraOffset = -1 );
1159         QMainWindow::removeToolBar( QDockWindow * );
1160         QMainWindow::toolBarsMovable() const;
1161         QMainWindow::toolBars( Dock dock ) const;
1162         QMainWindow::lineUpToolBars( bool keepNewLines = FALSE );
1163         QRegExp::match( const QString& str, int index = 0, int *len = 0,
1164                         bool indexIsStart = TRUE );
1165         QToolButton::setOnIconSet( const QIconSet & )
1166         QToolButton::setOffIconSet( const QIconSet & )
1167         QToolButton::onIconSet() const
1168         QToolButton::offIconSet() const
1169         QToolButton::setIconSet( const QIconSet & set, bool on )
1170         QToolButton::iconSet( bool on ) const
1171         QXmlInputSource::QXmlInputSource( QFile& file ), use QXmlInputSource( QIODevice *dev ) instead.
1172         QXmlInputSource::QXmlInputSource( QTextStream& stream ), use QXmlInputSource( QIODevice *dev ) instead.
1174 Removed functions:
1175         QWidget::setFontPropagation
1176         QWidget::setPalettePropagation
1177         QMenuBar::setActItem
1178         QMenuBar::setWindowsAltMode
1179         QCheckListItem::paintBranches
1180         QString::visual
1181         QString::basicDirection
1182         QRegExp::find( const QString& str, int index ) const; - has been renamed QRegExp::search()
1183         QFont::charSet() const, not needed anymore
1184         QFont::setCharSet( QFont::CharSet ), not needed anymore
1185         QPushButton::upButton(), not relevant anymore
1186         QPushButton::downButton(), not relevant anymore
1187         QSpinBox::upButton(), not relevant anymore
1188         QSpinBox::downButton(), not relevant anymore
1191 Removed preprocessor directives
1192 -------------------------------
1194         qcstring.h no longer contains the following defines:
1196                 #define strlen qstrlen
1197                 #define strcpy qstrcpy
1198                 #define strcmp qstrcmp
1199                 #define strncmp qstrncmp
1200                 #define stricmp qstricmp
1201                 #define strnicmp qstrnicmp
1203         These directives were meant to automagically replace calls to the
1204         above listed standard C functions with the equivalent Qt wrappers.
1205         The latter pre-check the input parameters for null pointers as those
1206         might cause crashes on some platforms.
1208         Although convenient, this trick turned out to sometimes conflict with
1209         third-party code, or, simply be nullified by standard system and
1210         library headers depending on version and include order.
1212         The name of some debugging macro variables has been changed.
1214                 DEBUG becomes QT_DEBUG
1215                 NO_DEBUG becomes QT_NO_DEBUG
1216                 NO_CHECK becomes QT_NO_CHECK
1217                 CHECK_STATE becomes QT_CHECK_STATE
1218                 CHECK_RANGE becomes QT_CHECK_RANGE
1219                 CHECK_NULL becomes QT_CHECK_NULL
1220                 CHECK_MATH becomes QT_CHECK_MATH
1222         The name of some other debugging macro functions has also been changed
1223         but source compatibility should not be affected if the macro variable
1224         QT_CLEAN_NAMESPACE is not defined:
1226                 ASSERT becomes Q_ASSERT
1227                 CHECK_PTR becomes Q_CHECK_PTR
1229         For the record these undocumented macro variables that are not part of
1230         the API have been changed:
1232                 _OS_*_ becomes Q_OS_*
1233                 _WS_*_ becomes Q_WS_*
1234                 _CC_*_ becomes Q_CC_*
1237 [Qt 3.0]