Qt 2.0 Beta2 is not binary compatible with Beta1, this means that any
programs linked with Beta1 must be recompiled.

The most important fixes since Beta 1:

configure
	Fixed the libzlib typo.
	Added -lflags argument.

Platforms
	Fixes for Borland C++, Solaris and AIX

QFileDialog
	Several user interface improvements

QPrinter
	Plain text printing works again.
	Multiple page printing fixed.

QWidget
	New widget flag WStyle_Dialog


Major changes since 1.4x:

The Qt version 2.x series is not binary compatible with the 1.x
series. This means programs compiled with Qt version 1.x must be
recompiled to work with Qt 2.0.

Qt 2.0 is mostly, but not completely, source compatible with Qt 1.x.
See the document "Porting from Qt 1.x to Qt 2.0" in the Online
Reference Documentation for information on how to port an existing
Qt 1.x-based program to Qt 2.0.


****************************************************************************
* 			     New classes				   *
****************************************************************************


* Support for generalized configrable styles:

    QStyle and subclasses

* Support for international software development:

    QTranslator and the QObject::tr() function
    QTextCodec (and subclasses)
    QString - a Unicode string
    QChar - a Unicode character

* Convenient and powerful new collection classes:
    QMap<Key,Type> - QDict with arbitrary keys
    QValueList<Type> - QList of types other than pointers
    QStringList - QValueList<QString> with helper functions

* Dialogs
    QColorDialog - user picks a color
    QFontDialog - user picks a font
    QWizard - framework for leading users through steps

* Layout
    QGrid/QHBox/QVBox - grid and boxes of widgets automatically assembled
    QHGroupBox/QVGroupBox - easy framed groups of widgets

* PNG Support
    PNG support is always compiled into Qt

* Rich Text
    QTextView - formatted text and images
    QTextBrowser - navigate formatted text and images
    QStyleSheet - define your own XML formatting tags
    QSimpleRichText - display rixh text anywhere

* Session management
    QSessionManager - safe state when system shuts down


****************************************************************************
* 	              Major changes in existing classes			   *
****************************************************************************

QString is now 16-bit Unicode. 

QPoint, QPointArray, QSize and QRect now have 32-bit coordinates.