"Fossies" - the Fresh Open Source Software Archive

Member "qt-everywhere-src-6.3.1/qtbase/dist/changes-3.0.0-beta1" (25 May 2022, 40900 Bytes) of package /linux/misc/qt-everywhere-src-6.3.1.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    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.
    4 
    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.
    8 
    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.
   14 
   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.
   21 
   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).
   27 
   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.
   34 
   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.
   38 
   39 
   40 The Qt Library
   41 ========================================
   42 
   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.
   47 
   48 
   49 Database support
   50 ----------------
   51 
   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.
   57 
   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.
   63 
   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.
   74 
   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.
   79 
   80 
   81 Component model - plugins
   82 -------------------------
   83 
   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.
   93 
   94 Qt Designer supports custom widgets in plugins, and will use the
   95 widgets both when designing and previewing forms.
   96 
   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.
  100 
  101 
  102 Rich text engine and editor
  103 ---------------------------
  104 
  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.
  112 
  113 
  114 Unicode
  115 -------
  116 
  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.
  124 
  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.
  132 
  133 
  134 Docked and Floating Windows
  135 ---------------------------
  136 
  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.
  146 
  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.
  151 
  152 
  153 Regular Expressions
  154 -------------------
  155 
  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.
  162 
  163 
  164 Storing application settings
  165 ----------------------------
  166 
  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.
  174 
  175 
  176 Creating and controlling other processes
  177 ----------------------------------------
  178 
  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.
  183 
  184 
  185 Accessibility (not part of the beta1 release)
  186 ---------------------------------------------
  187 
  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.
  196 
  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.
  201 
  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.
  204 
  205 
  206 XML Improvements
  207 ----------------
  208 
  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.
  213 
  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.
  221 
  222 
  223 SVG support
  224 -----------
  225 
  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.
  230 
  231 
  232 Multihead support
  233 -----------------
  234 
  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.
  240 
  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.
  244 
  245 
  246 X11 specific enhancements
  247 -------------------------
  248 
  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.
  252 
  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.
  261 
  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).
  266 
  267 
  268 Printing
  269 --------
  270 
  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.
  276 
  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.
  282 
  283 
  284 QHttp
  285 -----
  286 
  287 This class provides a simple interface for HTTP downloads and uploads.
  288 
  289 
  290 Compatibility with the Standard Template Library (STL)
  291 ------------------------------------------------------
  292 
  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()).
  299 
  300 
  301 Qt Designer
  302 ========================================
  303 
  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.
  306 
  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.
  312 
  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.
  319 
  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.
  326 
  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.
  332 
  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.
  340 
  341 
  342 Qt Linguist
  343 ========================================
  344 
  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.
  348 
  349 Translation 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 
  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.
  367 
  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.
  375 
  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.
  382 
  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.
  389 
  390 
  391 Qt Assistant
  392 ========================================
  393 
  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.
  401 
  402 
  403 QMake
  404 ========================================
  405 
  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.
  410 
  411 
  412 Qt Functions
  413 ========================================
  414 
  415 QAction
  416 -------
  417 
  418 All new functions:
  419 	void addedTo( QWidget *actionWidget, QWidget *container );
  420 	void addedTo( int index, QPopupMenu *menu );
  421 
  422 QActionGroup
  423 ------------
  424 
  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) )
  428 
  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;
  436 
  437 
  438 QApplication
  439 ------------
  440 
  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.
  443 
  444 desktop() now returns a QDesktopWidget that provides access to
  445 multi-head information. Prior to 3.0, it returned a normal QWidget.
  446 
  447 New functions to define the library search path for plugins
  448 (setLibraryPaths, ...).
  449 
  450 New functions to define reverse layout for bidirectional languages
  451 (setReverseLayout, ...).
  452 
  453 All 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 
  467 QClipboard
  468 ----------
  469 
  470 On systems that support it, for example X11, QClipboard now
  471 differentiates between the primary selection and the data in the clipboard.
  472 
  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 	
  481 
  482 
  483 QCursor
  484 -------
  485 
  486 Now inherits Qt namespace. Enum values like ArrowCursor,
  487 UpArrowCursor, CrossCursor etc. are now part of that namespace.
  488 
  489 
  490 QDataStream
  491 -----------
  492 
  493 Added missing operators for Q_LONG and Q_ULONG
  494 
  495 
  496 QDateTime / QDate / QTime
  497 -------------------------
  498 
  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).
  502 
  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 );
  515 
  516 QDialog
  517 -------
  518 
  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().
  522 
  523 exec() is now a public slot.
  524 
  525 Usability: For widgets supporting What's This help, QDialog
  526 automatically offers a context menu containing a "What's This?" entry.
  527 
  528 
  529 QEvent
  530 ------
  531 
  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.
  535 
  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.
  539 
  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.
  544 
  545 QWheelevent now carries an orientation to differentiate between
  546 horizontal and vertical wheels.
  547 
  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.
  551 
  552 New events: QContextMenuEvent, QIMEvent
  553 
  554 
  555 QFile
  556 -----
  557 
  558 Ported from int to Q_LONG to prepare for large file sizes on 64 bit
  559 systems.
  560 
  561 Filter handling made more flexible.
  562 
  563 
  564 QFileDialog
  565 -----------
  566 
  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& );
  573 
  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.	
  578 
  579 
  580 QCanvas 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 
  610 QCanvasSprite can now be set to animate its frames without the need to
  611 subclass.
  612 
  613 
  614 QFont, QFontDatabase, QFontInfo, QFontMetrics
  615 ---------------------------------------------
  616 
  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.
  623 
  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).
  629 
  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).
  636 
  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.
  640 
  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.
  645 
  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:
  652 
  653 	adobe-helvetica
  654 	cronyx-helvetica
  655 	phaisarn-helvetica
  656 
  657 Starting with 3.0, QFontDatabase lists them like this:
  658 
  659 	Helvetica [Adobe]
  660 	Helvetica [Cronyx]
  661 	Helvetica [Phaisarn]
  662 
  663 
  664 QFrame
  665 ------
  666 
  667 Two new frame shapes for more sophisticated style features:
  668 MenuBarPanel and ToolBarPanel.
  669 
  670 
  671 QGrid
  672 -----
  673 
  674 The member type
  675 
  676     enum Direction { Horizontal, Vertical };
  677 
  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.
  681 
  682 
  683 QGroupBox
  684 ---------
  685 
  686 More 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 
  694 QHeader
  695 -------
  696 
  697 New property: bool stretching
  698 
  699 New functions:
  700 	bool isStretchEnabled( int section );
  701 	void setStretchEnabled( bool b, int section );
  702 	
  703 
  704 QIconSet
  705 --------
  706 
  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.
  711 
  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.
  716 
  717 
  718 QIconView
  719 ---------
  720 
  721 Extended findItem() to support ComparisonFlags. Support for
  722 soft-hyphens when doing word wrap.
  723 
  724 New signal:
  725 	contextMenuRequested( QIconViewItem*, const QPoint& pos);
  726 
  727 
  728 QIconViewItem
  729 -------------
  730 
  731 Added support for explicit rtti.
  732 
  733 New function:
  734 	int rtti() const;
  735 
  736 
  737 
  738 QListBox
  739 --------
  740 
  741 Extended findItem() to support ComparisonFlags.
  742 
  743 New signal:
  744 	void contextMenu( QListBoxItem *, const QPoint & );
  745 
  746 
  747 QListBoxItem
  748 ------------
  749 
  750 Added support for explicit rtti.
  751 
  752 New function:
  753 	int rtti() const;
  754 
  755 
  756 
  757 QListView
  758 ---------
  759 
  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.
  763 
  764 In addition, in-place editing and per-item tooltips have been added.
  765 Extended findItem() to support ComparisonFlags
  766 
  767 New properties:
  768 	bool showToolTips
  769 	ResizeMode resizeMode
  770 
  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  );
  776 
  777 New functions:
  778 	void setResizeMode( ResizeMode m );
  779 	ResizeMode resizeMode() const;
  780 	QDragObject *dragObject();
  781 	void startDrag();
  782 	void startRename();
  783 
  784 
  785 QListViewItem
  786 -------------
  787 
  788 Added support for explicit rtti.
  789 
  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;
  804 
  805 	void dropped( QDropEvent *e );
  806 	void dragEntered();
  807 	void dragLeft();
  808 	void okRename( int col );
  809 	void cancelRename( int col );
  810 
  811 
  812 QLabel
  813 ------
  814 
  815 In addition to text, rich text, pixmaps and movies, QLabel can now
  816 display QPicture vector graphics.
  817 
  818 New functions:
  819 
  820 	QPicture *picture() const;
  821 	void setPicture( const QPicture & );
  822 
  823 
  824 QLineEdit
  825 ---------
  826 
  827 New property: bool dragEnabled
  828 
  829 New signal:
  830 	contextMenuRequested( QIconViewItem*, const QPoint& pos);
  831 
  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 );
  839 
  840 
  841 QMainWindow
  842 -----------
  843 
  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.
  847 
  848 
  849 New property:
  850 	bool dockWindowsMovable;
  851 
  852 New signals:
  853 	void dockWindowPositionChanged( QDockWindow * );
  854 
  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;
  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 
  882 QMetaObject
  883 -----------
  884 
  885 ###TODO
  886 
  887 
  888 QMimeSourceFactory
  889 ------------------
  890 
  891 New static functions:
  892 	QMimeSourceFactory* takeDefaultFactory();
  893 	static void addFactory( QMimeSourceFactory *f );
  894 
  895 
  896 QNetworkProtocol
  897 ----------------
  898 
  899 Spelling fix in Error::ErrListChildren enum.
  900 
  901 
  902 QRegExp
  903 -------
  904 
  905 QRegExp now has a more complete regular expression engine similar to
  906 Perl's, with full Unicode and backreference support.
  907 
  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 );
  921 
  922 
  923 QSessionManager
  924 ---------------
  925 
  926 Renamed the misnamed setProperty() overloads to setManagerProperty()
  927 to resolve the conflict with the now virtual QObject::setProperty().
  928 
  929 
  930 QString
  931 -------
  932 
  933 New functions:
  934 	bool endsWith( const QString & );
  935 	int similarityWith( const QString & );
  936 
  937 ### TODO
  938 
  939 QStyle
  940 ------
  941 
  942 ### TODO
  943 
  944 QTabBar
  945 -------
  946 
  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;
  951 
  952 
  953 
  954 QToolBar
  955 --------
  956 
  957 Inherits QDockWindow now, previously only QWidget.
  958 
  959 
  960 QToolButton
  961 -----------
  962 
  963 New property:
  964 	QIconSet iconSet
  965 
  966 New functions:
  967 	QIconSet iconSet() const;
  968 	virtual void setIconSet( const QIconSet & );
  969 
  970 QWidget
  971 -------
  972 
  973 New 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 
  982 QWizard
  983 -------
  984 
  985 New property: QString titleFont
  986 
  987 New functions:
  988 	QFont titleFont() const;
  989 	void setTitleFont( const QFont & );
  990 	int indexOf( QWidget* ) const;
  991 
  992 
  993 QWMatrix
  994 --------
  995 
  996 New function:
  997 	bool isIdentity() const;
  998 	
  999 
 1000 QGL Module
 1001 ----------
 1002 
 1003 QGLWidget
 1004 New functions:
 1005 	QGLFormat requestedFormat() const;
 1006 	QImage grabFrameBuffer( bool withAlpha = FALSE );
 1007 
 1008 
 1009 QWorkspace Module
 1010 -----------------
 1011 
 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.
 1016 
 1017 New property:
 1018 	bool scrollBarsEnabled
 1019 
 1020 
 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 );
 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 
 1085 New classes
 1086 -----------
 1087 
 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
 1112 
 1113 
 1114 Renamed Classes
 1115 ---------------
 1116 
 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
 1124 
 1125 The include file names have changed accordingly (e.g., <qmemarray.h>).
 1126 
 1127 
 1128 New Modules
 1129 -----------
 1130 
 1131 SQL
 1132 	QDataBrowser
 1133 	QDataTable
 1134 	QDataView
 1135 	QDateTimeEdit
 1136 	QEditFactory
 1137 
 1138 
 1139 Obsolete 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 
 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.
 1173 
 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
 1189 
 1190 
 1191 Removed 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