1Qt 3.0 adds a lot of new features and improvements over the Qt 2.x
2series. Some internals have undergone major redesign and new classes
3and methods have been added.
4
5We have tried to keep the API of Qt 3.0 as compatible as possible with
6the Qt 2.x series. For most applications only minor changes will be
7needed to compile and run them successfully using Qt 3.0.
8
9One of the major new features that has been added in the 3.0 release
10is a module allowing you to easily work with databases. The API is
11platform independent and database neutral. This module is seamlessly
12integrated into Qt Designer, greatly simplifying the process of
13building database applications and using data aware widgets.
14
15Other major new features include a component architecture allowing you
16to build cross platform components, 'plugins' with Qt. You can use
17your own and third party plugins your own applications. The Unicode
18support of Qt 2.x has been greatly enhanced, it now includes full
19support for scripts written from right to left (e.g. Arabic and
20Hebrew) and also provides improved support for Asian languages.
21
22Many new classes have been added to the Qt Library. Amongst them are
23classes that provide a docking architecture (QDockArea/QDockWindow), a
24powerful rich text editor (QTextEdit), a class to store and access
25application settings (QSettings) and a class to create and communicate
26with processes (QProcess).
27
28Apart from the changes in the library itself a lot has been done to
29make the development of Qt applications with Qt 3.0 even easier than
30before. Two new applications have been added: Qt Linguist is a tool to
31help you translate your application into different languages; Qt
32Assistant is an easy to use help browser for the Qt documentation that
33supports bookmarks and can search by keyword.
34
35Another change concerns the Qt build system, which has been reworked
36to make it a lot easier to port Qt to new platforms. You can use this
37platform independent build system for your own applications.
38
39
40The Qt Library
41========================================
42
43A large number of new features has been added to Qt 3.0. The following
44list gives an overview of the most important new and changed aspects
45of the Qt library. A full list of every new method follows the
46overview.
47
48
49Database support
50----------------
51
52One of the major new features in Qt 3.0 is the SQL module that
53provides cross-platform access to SQL databases, making database
54application programming with Qt seamless and portable. The API, built
55with standard SQL, is database-neutral and software development is
56independent of the underlying database.
57
58A collection of tightly focused C++ classes are provided to give the
59programmer direct access to SQL databases. Developers can send raw SQL
60to the database server or have the Qt SQL classes generate SQL queries
61automatically.  Drivers for Oracle, PostgreSQL, MySQL and ODBC are
62available and writing new drivers is straightforward.
63
64Tying the results of SQL queries to GUI components is fully supported
65by Qt's SQL widgets. These classes include a tabular data widget
66(for spreadsheet-like data presentation with in-place editing), a
67form-based data browser (which provides data navigation and edit
68functions) and a form-based data viewer (which provides read-only
69forms). This framework can be extended by using custom field editors,
70allowing for example, a data table to use custom widgets for in-place
71editing. The SQL module fully supports Qt's signal/slots mechanism,
72making it easy for developers to include their own data validation and
73auditing code.
74
75Qt Designer fully supports Qt's SQL module. All SQL widgets can be
76laid out within Qt Designer, and relationships can be established
77between controls visually. Many interactions can be defined purely in
78terms of Qt's signals/slots mechanism directly in Qt Designer.
79
80
81Component model - plugins
82-------------------------
83
84The QLibrary class provides a platform independent wrapper for runtime
85loading of shared libraries. Access to the shared libraries uses a
86COM-like interface. QPluginManager makes it trivial to implement
87plugin support in applications. The Qt library is able to load
88additional styles, database drivers and text codecs from plugins which
89implement the relevant interfaces, e.g. QStyleFactoryInterface,
90QSqlDriverInterface or QTextCodecInterface. It is possible to remove
91unused components from the Qt library, and easy to extend any
92application with 3rd party styles, database drivers or text codecs.
93
94Qt Designer supports custom widgets in plugins, and will use the
95widgets both when designing and previewing forms.
96
97QComponentFactory makes it easy to register any kind of component in a
98global database (e.g. the Windows Registry) and to use any registered
99component.
100
101
102Rich text engine and editor
103---------------------------
104
105The rich text engine originally introduced in Qt 2.0 has been further
106optimized and extended to support editing. It allows editing formatted
107text with different fonts, colors, paragraph styles, tables and
108images. The editor supports different word wrap modes, command-based
109undo/redo, multiple selections, drag and drop, and many other
110features.  The engine is highly optimized for proccesing and displaying
111large documents quickly and efficiently.
112
113
114Unicode
115-------
116
117Apart from the rich text engine, another new feature of Qt 3.0 that
118relates to text handling is the greatly improved Unicode support. Qt
1193.0 includes an implementation of the bidirectional algorithm (BiDi)
120as defined in the Unicode standard and a shaping engine for Arabic,
121which gives full native language support to Arabic and Hebrew speaking
122people. At the same time the support for Asian languages has been
123greatly enhanced.
124
125The support is almost transparent for the developer using Qt to
126develop their applications. This means that developers who developed
127applications using Qt 2.x will automatically gain the full support for
128these languages when switching to Qt 3.0. Developers can rely on their
129application to work for people using writing systems different from
130Latin1, without having to worry about the complexities involved with
131these scripts, as Qt takes care of this automatically.
132
133
134Docked and Floating Windows
135---------------------------
136
137Qt 3.0 introduces the concept of Dock Windows and Dock Areas. Dock
138windows are widgets, that can be attached to, and detached from, dock
139areas. The commonest kind of dock window is a tool bar. Any number of
140dock windows may be placed in a dock area. A main window can have dock
141areas, for example, QMainWindow provides four dock areas (top, left,
142bottom, right) by default. The user can freely move dock windows and
143place them at a convenient place in a dock area, or drag them out of
144the application and have them float freely as top level windows in
145their own right. Dock windows can also be minimized or hidden.
146
147For developers, dock windows behave just like ordinary widgets. QToolbar
148for example is now a specialized subclass of a dock window.  The API
149of QMainWindow and QToolBar is source compatible with Qt 2.x, so
150existing code which uses these classes will continue to work.
151
152
153Regular Expressions
154-------------------
155
156Qt has always provided regular expression support, but that support
157was pretty much limited to what was required in common GUI control
158elements such as file dialogs. Qt 3.0 introduces a new regular
159expression engine that supports most of Perl's regex features and is
160Unicode based. The most useful additions are support for parentheses
161(capturing and non-capturing) and backreferences.
162
163
164Storing application settings
165----------------------------
166
167Most programs will need to store some settings between runs, for
168example, user selected fonts, colors and other preferences, or a list
169of recently used files.  The new QSettings class provides a platform
170independent way to achieve this goal. The API makes it easy to store
171and retrieve most of the basic data types used in Qt (such as basic
172C++ types, strings, lists, colors, etc). The class uses the registry
173on the Windows platform and traditional resource files on Unix.
174
175
176Creating and controlling other processes
177----------------------------------------
178
179QProcess is a class that allows you to start other programs from
180within a Qt application in a platform independent manner. It gives you
181full control over the started program, for example you can redirect
182the input and output of console applications.
183
184
185Accessibility (not part of the beta1 release)
186---------------------------------------------
187
188Accessibility means making software usable and accessible to a wide
189range of users, including those with disabilities. In Qt 3.0, most
190widgets provide accessibility information for assistive tools that can
191be used by a wide range of disabled users. Qt standard widgets like
192buttons or range controls are fully supported. Support for complex
193widgets, like e.g. QListView, is in development. Existing applications
194that make use of standard widgets will become accessible just by using
195Qt 3.0.
196
197Qt uses the Active Accessibility infrastructure on Windows, and needs
198the MSAA SDK, which is part of most platform SDKs. With improving
199standardization of accessibility on other platforms, Qt will support
200assistive technologies on other systems, too.
201
202The accessibility API in Qt is not yet stable, which is why we decided
203not to make it a part of the beta1 release.
204
205
206XML Improvements
207----------------
208
209The XML framework introduced in Qt 2.2 has been vastly improved. Qt
2102.2 already supported level 1 of the Document Object Model (DOM), a
211W3C standard for accessing and modifying XML documents.  Qt 3.0 has
212added support for DOM Level 2 and XML namespaces.
213
214The XML parser has been extended to allow incremental parsing of XML
215documents. This allows you to start parsing the document directly
216after the first parts of the data have arrived, and to continue
217whenever new data is available.  This is especially useful if the XML
218document is read from a slow source, e.g. over the network, as it
219allows the application to start working on the data at a very early
220stage.
221
222
223SVG support
224-----------
225
226SVG is a W3C standard for "Scalable Vector Graphics". Qt 3.0's SVG
227support means that QPicture can optionally generate and import static
228SVG documents. All the SVG features that have an equivalent in
229QPainter are supported.
230
231
232Multihead support
233-----------------
234
235Many professional applications, such as DTP and CAD software, are able
236to display data on two or more monitors. In Qt 3.0 the QDesktopWidget
237class provides the application with runtime information about the
238number and geometry of the desktops on the different monitors and such
239allows applications to efficiently use a multi-monitor setup.
240
241The virtual desktop of Windows 98 and 2000 is supported, as well as
242the traditional multi-screen and the newer Xinerama multihead setups
243on X11.
244
245
246X11 specific enhancements
247-------------------------
248
249Qt 3.0 now complies with the NET WM Specification, recently adopted
250by KDE 2.0.  This allows easy integration and proper execution with
251desktop environments that support the NET WM specification.
252
253The font handling on X11 has undergone major changes.  QFont no longer
254has a one-to-one relation with window system fonts.  QFont is now a
255logical font that can load multiple window system fonts to simplify
256Unicode text display.  This completely removes the burden of
257changing/setting fonts for a specific locale/language from the
258programmer.  For end-users, any font can be used in any locale.  For
259example, a user in Norway will be able to see Korean text without
260having to set their locale to Korean.
261
262Qt 3.0 also supports the new render extension recently added to
263XFree86. This adds support for anti aliased text and pixmaps with
264alpha channel (semi transparency) on the systems that support the
265rendering extension (at the moment XFree 4.0.3 and later).
266
267
268Printing
269--------
270
271Printing support has been enhanced on all platforms. The QPrinter
272class now supports setting a virtual resolution for the painting
273process. This makes WYSIWYG printing trivial, and also allows you to
274take full advantage of the high resolution of a printer when painting
275on it.
276
277The postscript driver built into Qt and used on Unix has been greatly
278enhanced. It supports the embedding of true/open type and type1 fonts
279into the document, and can correctly handle and display Unicode.
280Support for fonts built into the printer has been enhanced and Qt now
281knows about the most common printer fonts used for Asian languages.
282
283
284QHttp
285-----
286
287This class provides a simple interface for HTTP downloads and uploads.
288
289
290Compatibility with the Standard Template Library (STL)
291------------------------------------------------------
292
293Support for the C++ Standard Template Library has been added to the Qt
294Template Library (QTL).  The QTL classes now contain appropriate copy
295constructors and typedefs so that they can be freely mixed with other
296STL containers and algorithms.  In addition, new member functions have
297been added to QTL template classes which correspond to STL-style
298naming conventions (e.g., push_back()).
299
300
301Qt Designer
302========================================
303
304Qt Designer was a pure dialog editor in Qt 2.2 but has now been
305extended to provide the full functionality of a GUI design tool.
306
307This includes the ability to lay out main windows with menus and
308toolbars. Actions can be edited within Qt Designer and then plugged
309into toolbars and menu bars via drag and drop. Splitters can now be
310used in a way similar to layouts to group widgets horizontally or
311vertically.
312
313In Qt 2.2, many of the dialogs created by Qt Designer had to be
314subclassed to implement functionality beyond the predefined signal and
315slot connections. Whilst the subclassing approach is still fully supported,
316Qt Designer now offers an alternative: a plugin for editing
317slots. The editor offers features such as syntax highlighting,
318completion, parentheses matching and incremental search.
319
320The functionality of Qt Designer can now be extended via plugins.
321Using Qt Designer's interface or by implementing one of the provided
322interfaces in a plugin, a two way communication between plugin and Qt
323Designer can be established. This functionality is used to implement
324plugins for custom widgets, so that they can be used as real widgets
325inside the designer.
326
327Basic support for project management has been added. This allows you
328to read and edit *.pro files, add and remove files to/from the project
329and do some global operations on the project. You can now open the
330project file and have one-click access to all the *.ui forms in the
331project.
332
333In addition to generating code via uic, Qt Designer now supports the
334dynamic creation of widgets directly from XML user interface
335description files (*.ui files) at runtime. This eliminates the need of
336recompiling your application when the GUI changes, and could be used
337to enable your customers to do their own customizations. Technically,
338the feature is provided by a new class, QWidgetFactory in the
339QResource library.
340
341
342Qt Linguist
343========================================
344
345Qt Linguist is a GUI utility to support translating the user-visible
346text in applications written with Qt. It comes with two command-line
347tools: lupdate and lrelease.
348
349Translation of a Qt application is a three-step process:
350
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.
359
360Qt Linguist is a tool suitable for use by translators. Each
361user-visible (source) text is characterized by the text itself, a
362context (usually the name of the C++ class containing the text), and
363an optional comment to help the translator. The C++ class name will
364usually be the name of the relevant dialog, and the comment will often
365contain instructions that describe how to navigate to the relevant
366dialog.
367
368You can create phrase books for Qt Linguist to provide common
369translations to help ensure consistency and to speed up the
370translation process. Whenever a translator navigates to a new text to
371translate, Qt Linguist uses an intelligent algorithm to provide a list
372of possible translations: the list is composed of relevant text from
373any open phrase books and also from identical or similar text that has
374already been translated.
375
376Once a translation is complete it can be marked as "done"; such
377translations 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
379Linguist is a GUI application with dock windows and mouse control,
380toolbars, etc., it has a full set of keyboard shortcuts to make
381translation as fast and efficient as possible.
382
383When the Qt application that you're developing evolves (e.g. from
384version 1.0 to version 1.1), the utility lupdate merges the source
385texts from the new version with the previous translation source file,
386reusing existing translations. In some typical cases, lupdate may
387suggest translations. These translations are marked as unfinished, so
388you can easily find and check them.
389
390
391Qt Assistant
392========================================
393
394Due to the positive feedback we received about the help system built
395into Qt Designer, we decided to offer this part as a separate
396application called Qt Assistant. Qt Assistant can be used to browse
397the Qt class documentation as well as the manuals for Qt Designer and
398Qt Linguist. It offers index searching, a contents overview, bookmarks
399history and incremental search. Qt Assistant is used by both Qt
400Designer and Qt Linguist for browsing their help documentation.
401
402
403QMake
404========================================
405
406To ease portability we now provide the qmake utility to replace tmake.
407QMake is a C++ version of tmake which offers additional functionallity
408that is difficult to reproduce in tmake. Qt uses qmake in its
409build system and we have released it as free software.
410
411
412Qt Functions
413========================================
414
415QAction
416-------
417
418All new functions:
419	void addedTo( QWidget *actionWidget, QWidget *container );
420	void addedTo( int index, QPopupMenu *menu );
421
422QActionGroup
423------------
424
425New mode "uses drop down", where members are shown in a separate
426subwidget such as a combobox or a submenu (enable with
427setUsesDropDown(TRUE) )
428
429All 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;
436
437
438QApplication
439------------
440
441Added the setStyle(const QString&) overload that takes the name of the
442style as its argument. This loads a style plugin via a QStyleFactory.
443
444desktop() now returns a QDesktopWidget that provides access to
445multi-head information. Prior to 3.0, it returned a normal QWidget.
446
447New functions to define the library search path for plugins
448(setLibraryPaths, ...).
449
450New functions to define reverse layout for bidirectional languages
451(setReverseLayout, ...).
452
453All new functions:
454	bool hasPendingEvents()
455
456	void setLibraryPaths(const QStringList &);
457	QStringList libraryPaths();
458	void addLibraryPath(const QString &);
459	void removeLibraryPath(const QString &);
460
461	void setReverseLayout( bool b );
462	bool reverseLayout();
463	int horizontalAlignment( int align );
464
465
466
467QClipboard
468----------
469
470On systems that support it, for example X11, QClipboard now
471differentiates between the primary selection and the data in the clipboard.
472
473All new functions:
474	bool supportsSelection() const;
475	bool ownsClipboard() const;
476	void setSelectionMode(bool enable);
477	bool selectionModeEnabled() const;
478New signals:
479	void selectionChanged()
480
481
482
483QCursor
484-------
485
486Now inherits Qt namespace. Enum values like ArrowCursor,
487UpArrowCursor, CrossCursor etc. are now part of that namespace.
488
489
490QDataStream
491-----------
492
493Added missing operators for Q_LONG and Q_ULONG
494
495
496QDateTime / QDate / QTime
497-------------------------
498
499More sophisticated toString() function that takes a DateFormat, where
500DateFormat can be either TextDate (the default), ISODate (ISO 8601) or
501LocalDate (locale dependent).
502
503All 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 );
515
516QDialog
517-------
518
519Merged with QSemiModal. Calling show() on a modal dialog will return
520immediately, not enter a local event loop. Showing a modal dialog in
521its own event loop is achieved using exec().
522
523exec() is now a public slot.
524
525Usability: For widgets supporting What's This help, QDialog
526automatically offers a context menu containing a "What's This?" entry.
527
528
529QEvent
530------
531
532Mouse events are now propagated up to the toplevel widget if no widget
533accepts them and no event filter filters them out. In previous Qt
534versions, only key events were propagated.
535
536All events carry a flag 'spontaneous' to determine whether the even
537came from the outside or was generated by code within the
538applications. Previously, only show and hide events had this flag.
539
540Enter/Leave event generation has been fixed. Previously, a widget
541received a leave event when the mouse pointer entered one of its
542children. This was both unnatural and contradictive to the
543documentation.
544
545QWheelevent now carries an orientation to differentiate between
546horizontal and vertical wheels.
547
548QFocusEvent: new reason 'Backtab' (previously only 'Tab' was
549available). This makes it possible to discover from what direction on
550the tab-focus chain the widget was entered.
551
552New events: QContextMenuEvent, QIMEvent
553
554
555QFile
556-----
557
558Ported from int to Q_LONG to prepare for large file sizes on 64 bit
559systems.
560
561Filter handling made more flexible.
562
563
564QFileDialog
565-----------
566
567All new Functions:
568	void setSelectedFilter( const QString& );
569	void setSelectedFilter( int );
570New signals:
571	void filesSelected( const QStringList& );
572	void filterSelected( const QString& );
573
574If you try to specify an invalid file when using getOpenFileName(s), an error message
575will appear and the file will not be accepted.  In 2.x, this function behaved differently
576because users were using getOpenFileName(s) as a Save File Dialog; you should use
577getSaveFileName() when you require a Save File Dialog.
578
579
580QCanvas Module
581--------------
582
583	New classes:
584		QCanvasSpline - a multi-bezier spline
585
586	QCanvasItemList
587		void update();
588
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);
595
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;
609
610QCanvasSprite can now be set to animate its frames without the need to
611subclass.
612
613
614QFont, QFontDatabase, QFontInfo, QFontMetrics
615---------------------------------------------
616
617The QFont::CharSet enum has been removed and replaced with the
618QFont::Script enum. With this change, a QFont is not associated with a
619specific character set. Instead, QFont uses Unicode Scripts for
620loading fonts.  On platforms where most fonts do not use the Unicode
621encoding (currently only X11), multiple locale and character-set
622dependent fonts can be loaded for the individual Unicode Scripts.
623
624Another new feature of QFont is a much more flexible substitution
625mechanism. Each family can have a list of appropriate substitutes. The
626font substitution feature allows you to specify a list of substitute
627fonts. Substitute fonts are used when a font cannot be loaded, or if
628the specified font doesn't have a particular character (X11 only).
629
630For example (on X11), you select the font Lucida, which doesn't have
631Korean characters. For Korean text, you want to use the Mincho font
632family. By adding Mincho to the list, any Korean characters not found
633in Lucida will be used from Mincho. Because the font substitutions are
634lists, you can also select multiple families, such as Song Ti (for use
635with Chinese text).
636
637QFontInfo and QFontMetrics had small API changes related to the
638disappearance of QFont::CharSet.  In terms of functionality, the
639behavior of these classes is unchanged.
640
641QFontDatabase had several API cleanups related to the disappearance of
642QFont::CharSet.  Most QFontDatabase member functions take one less
643argument, yet compatibility functions still exist to keep old source
644code working.
645
646Family and style names returned from QFontDatabase are now processed
647and formatted in a way that is suitable for display to users.  Family
648and foundry names are capitalized and foundry names are enclosed in
649square brackets after the family name.  For example, the Helvetica
650font family might have 3 different foundries: Adobe, Cronyx and
651Phaisarn. In 2.x, QFontDatabase listed them like this:
652
653	adobe-helvetica
654	cronyx-helvetica
655	phaisarn-helvetica
656
657Starting with 3.0, QFontDatabase lists them like this:
658
659	Helvetica [Adobe]
660	Helvetica [Cronyx]
661	Helvetica [Phaisarn]
662
663
664QFrame
665------
666
667Two new frame shapes for more sophisticated style features:
668MenuBarPanel and ToolBarPanel.
669
670
671QGrid
672-----
673
674The member type
675
676    enum Direction { Horizontal, Vertical };
677
678has been eliminated, as it is redundant: use Qt::Orientation instead.
679Old code referring to QGrid::Horizontal or QGrid::Vertical will still
680work, as QGrid counts Qt among its ancestors.
681
682
683QGroupBox
684---------
685
686More functionality of the built-in layout is exposed:
687
688	int insideMargin() const;
689	int insideSpacing() const;
690	void setInsideMargin( int m );
691	void setInsideSpacing( int s );
692
693
694QHeader
695-------
696
697New property: bool stretching
698
699New functions:
700	bool isStretchEnabled( int section );
701	void setStretchEnabled( bool b, int section );
702
703
704QIconSet
705--------
706
707In addition to the mode - which can be either Normal, Disabled or
708Active - QIconSet now supports different pixmaps for a state, i.e. On
709or Off. The functions pixmap() and setPixmap() have been extended
710accordingly.
711
712The default constructor no longer initializes the iconset to
713contain a null pixmap. QIconSet::isNull() returns TRUE for un-
714initialized iconsets, and pixmap() still returns a null pixmap for
715pixmaps that couldn't be generated.
716
717
718QIconView
719---------
720
721Extended findItem() to support ComparisonFlags. Support for
722soft-hyphens when doing word wrap.
723
724New signal:
725	contextMenuRequested( QIconViewItem*, const QPoint& pos);
726
727
728QIconViewItem
729-------------
730
731Added support for explicit rtti.
732
733New function:
734	int rtti() const;
735
736
737
738QListBox
739--------
740
741Extended findItem() to support ComparisonFlags.
742
743New signal:
744	void contextMenu( QListBoxItem *, const QPoint & );
745
746
747QListBoxItem
748------------
749
750Added support for explicit rtti.
751
752New function:
753	int rtti() const;
754
755
756
757QListView
758---------
759
760It was never really hard to implement drag and drop with QListView,
761but since many applications demand this functionality today, we
762decided to add it to the listview itself.
763
764In addition, in-place editing and per-item tooltips have been added.
765Extended findItem() to support ComparisonFlags
766
767New properties:
768	bool showToolTips
769	ResizeMode resizeMode
770
771New 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  );
776
777New functions:
778	void setResizeMode( ResizeMode m );
779	ResizeMode resizeMode() const;
780	QDragObject *dragObject();
781	void startDrag();
782	void startRename();
783
784
785QListViewItem
786-------------
787
788Added support for explicit rtti.
789
790New 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;
804
805	void dropped( QDropEvent *e );
806	void dragEntered();
807	void dragLeft();
808	void okRename( int col );
809	void cancelRename( int col );
810
811
812QLabel
813------
814
815In addition to text, rich text, pixmaps and movies, QLabel can now
816display QPicture vector graphics.
817
818New functions:
819
820	QPicture *picture() const;
821	void setPicture( const QPicture & );
822
823
824QLineEdit
825---------
826
827New property: bool dragEnabled
828
829New signal:
830	contextMenuRequested( QIconViewItem*, const QPoint& pos);
831
832New 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 );
839
840
841QMainWindow
842-----------
843
844Added a dock window architecture. Previous versions of QMainWindow
845could only deal with toolbars, now they handle generalized dock
846windows. QToolBar inherits QDockWindow.
847
848
849New property:
850	bool dockWindowsMovable;
851
852New signals:
853	void dockWindowPositionChanged( QDockWindow * );
854
855New 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;
862
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 * );
868
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;
878
879	bool showDockMenu( const QPoint &globalPos );
880
881
882QMetaObject
883-----------
884
885###TODO
886
887
888QMimeSourceFactory
889------------------
890
891New static functions:
892	QMimeSourceFactory* takeDefaultFactory();
893	static void addFactory( QMimeSourceFactory *f );
894
895
896QNetworkProtocol
897----------------
898
899Spelling fix in Error::ErrListChildren enum.
900
901
902QRegExp
903-------
904
905QRegExp now has a more complete regular expression engine similar to
906Perl's, with full Unicode and backreference support.
907
908New 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 );
921
922
923QSessionManager
924---------------
925
926Renamed the misnamed setProperty() overloads to setManagerProperty()
927to resolve the conflict with the now virtual QObject::setProperty().
928
929
930QString
931-------
932
933New functions:
934	bool endsWith( const QString & );
935	int similarityWith( const QString & );
936
937### TODO
938
939QStyle
940------
941
942### TODO
943
944QTabBar
945-------
946
947The extended QTabWidget support in Qt Designer made two more
948functions handy to have:
949	QTab * tabAt( int ) const;
950	int indexOf( int ) const;
951
952
953
954QToolBar
955--------
956
957Inherits QDockWindow now, previously only QWidget.
958
959
960QToolButton
961-----------
962
963New property:
964	QIconSet iconSet
965
966New functions:
967	QIconSet iconSet() const;
968	virtual void setIconSet( const QIconSet & );
969
970QWidget
971-------
972
973New functions:
974
975    const QColor & eraseColor() const;
976    virtual void setEraseColor( const QColor & );
977    const QPixmap * erasePixmap() const;
978    virtual void setErasePixmap( const QPixmap & );
979
980
981
982QWizard
983-------
984
985New property: QString titleFont
986
987New functions:
988	QFont titleFont() const;
989	void setTitleFont( const QFont & );
990	int indexOf( QWidget* ) const;
991
992
993QWMatrix
994--------
995
996New function:
997	bool isIdentity() const;
998
999
1000QGL Module
1001----------
1002
1003QGLWidget
1004New functions:
1005	QGLFormat requestedFormat() const;
1006	QImage grabFrameBuffer( bool withAlpha = FALSE );
1007
1008
1009QWorkspace Module
1010-----------------
1011
1012A new property scrollBarsEnabled makes it possible to add on-demand
1013scrollbars to the workspace. We define this property in Qt Designer to
1014make designing forms larger than the available space on the desktop
1015more comfortable.
1016
1017New property:
1018	bool scrollBarsEnabled
1019
1020
1021QXML Module
1022-----------
1023Many 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 );
1049
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;
1061
1062
1063	QXmlAttributes
1064		void clear();
1065		void append( const QString &qName, const QString &uri, const QString &localPart, const QString &value );
1066
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 );
1074
1075	QXmlSimpleReader:
1076		bool parse( const QXmlInputSource& input, bool incremental );
1077		bool parseContinue();
1078
1079	QXmlEntityResolver:
1080		bool startEntity( const QString& name );
1081		bool endEntity( const QString& name );
1082
1083
1084
1085New classes
1086-----------
1087
1088QAquaStyle (only on MacOS X)
1089QCleanupHandler
1090QComponentFactory
1091QComponentFactoryInterface
1092QComponentServerInterface
1093QContextMenuEvent
1094QDesktopWidget
1095QDockArea
1096QDockWindow
1097QErrorMessage
1098QFeatureListInterface
1099QHttp [network]
1100QInterfaceListInterface
1101QInterfacePtr
1102QIMEvent
1103QLibrary
1104QLibraryInterface
1105QStyleFactory
1106QStyleInterface
1107QTextCodecInterface
1108QUnknownInterface
1109QUuid
1110QRegExpValidator
1111QTextEdit
1112
1113
1114Renamed Classes
1115---------------
1116
1117QArray has been renamed QMemArray
1118QCollection has been renamed QPtrCollection
1119QList has been renamed QPtrList
1120QListIterator has been renamed QPtrListIterator
1121QQueue has been renamed QPtrQueue
1122QStack has been renamed QPtrStack
1123QVector has been renamed QPtrVector
1124
1125The include file names have changed accordingly (e.g., <qmemarray.h>).
1126
1127
1128New Modules
1129-----------
1130
1131SQL
1132	QDataBrowser
1133	QDataTable
1134	QDataView
1135	QDateTimeEdit
1136	QEditFactory
1137
1138
1139Obsolete classes
1140----------------
1141
1142	QSemiModal, use QDialog instead.
1143	QMultiLineEdit, use QTextEdit instead.
1144	QTableView, use QScrollView or QTable instead.
1145	QAsyncIO, QDataSink, QDataSource, QDataPump and QIODeviceSource
1146
1147
1148Obsolete 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.
1173
1174Removed 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
1189
1190
1191Removed preprocessor directives
1192-------------------------------
1193
1194	qcstring.h no longer contains the following defines:
1195
1196		#define strlen qstrlen
1197		#define strcpy qstrcpy
1198		#define strcmp qstrcmp
1199		#define strncmp qstrncmp
1200		#define stricmp	qstricmp
1201		#define strnicmp qstrnicmp
1202
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.
1207
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.
1211
1212	The name of some debugging macro variables has been changed.
1213
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
1221
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:
1225
1226		ASSERT becomes Q_ASSERT
1227		CHECK_PTR becomes Q_CHECK_PTR
1228
1229	For the record these undocumented macro variables that are not part of
1230	the API have been changed:
1231
1232		_OS_*_ becomes Q_OS_*
1233		_WS_*_ becomes Q_WS_*
1234		_CC_*_ becomes Q_CC_*
1235
1236
1237[Qt 3.0]
1238
1239