Here is a list of user-visible changes in Qt from 0.99 to 1.0.
As usual, we fixed some bugs and improved the documentation.


****************************************************************************
*               Changes that might affect runtime behavior                 *
****************************************************************************

QComboBox:
----------
The combo box is resized to the largest item when automatic resizing
is enabled. In 0.99 it resized itself to the current item.



****************************************************************************
*               Changes that might generate compile errors                 *
*                        when compiling old code                           *
****************************************************************************

none



****************************************************************************
*               Type changes that might generate warnings:                 *
****************************************************************************

none



****************************************************************************
*                         Obsoleted functions                              *
****************************************************************************

All pre-1.0 obsoleted functions are now removed.



****************************************************************************
*                 All other changes from 0.99 to 1.0                       *
****************************************************************************

QBitmap:
--------
Added constructor that takes a file name. Loads an image from file.


QDialog:
--------
QDialog inherits QWidget instead of QWindow.


QPixmap:
--------
Added constructor that takes a file name. Loads an image from file.


QTimer:
-------
Added static function singleShot(). Convenient function.
