dist/changes-2.1.0
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 Qt 2.1 introduces new features as well as many improvements over the
       
     2 2.0.x series. This file will only give an overview of the main changes
       
     3 since version 2.0.2.  A complete list would simply be too large to be
       
     4 useful.  For more detail see the online documentation which is included
       
     5 in this distribution, and also available on
       
     6 http://qt.nokia.com/doc/
       
     7 
       
     8 The Qt version 2.1 series is binary compatible with the 2.0.x
       
     9 series - applications compiled for 2.0 will continue to run with 2.1.
       
    10 
       
    11 As with previous Qt releases, the API and functionality of Qt is
       
    12 completely portable between Microsoft Windows and X11.  It is also portable
       
    13 between Windows 95, 98 and NT; unlike most toolkits, Qt lets a single
       
    14 executable work on all three.
       
    15 
       
    16 ****************************************************************************
       
    17 *			    Overview					   *
       
    18 ****************************************************************************
       
    19 
       
    20 As usual, large sections of the documentation have been revised and
       
    21 lots of new documentation has been added.
       
    22 
       
    23 Much work went into existing classes, based on all the feedback we got
       
    24 from our users. A warm thank you to you all at this point, we honestly
       
    25 hope to satisfy most of your wishes with the new release.
       
    26 
       
    27 Among the things that got a lot of polishing is the new geometry
       
    28 management system that was introduced with the 2.x series. Some
       
    29 classes, such as QBoxLayout, have been rewritten and many size hints
       
    30 and size policies were optimized. As usual with newly introduced
       
    31 systems, the occasional bug has been fixed as well. As a result,
       
    32 layout in Qt-2.1 is not only nicer but also faster.
       
    33 
       
    34 Big parts of the file dialog have been rewritten. It is now
       
    35 synchronized in terms of features with the common Windows dialog,
       
    36 including fancy drag'n'drop and in-place renaming. You can customize
       
    37 both parts of the dialog, the front-end with info and preview widgets,
       
    38 the back-end with different network protocols (see the QFileDialog and
       
    39 QNetworkProtocol documentation for details).
       
    40 
       
    41 Especially interesting for dynamic Qt applications is the newly
       
    42 introduced property system. Many interesting things, from scripting up
       
    43 to graphical user interface builders, become easier. The technology
       
    44 requires a new macro Q_PROPERTY and a new revision of Qt's meta object
       
    45 compiler (moc). See the Qt documentation for details.
       
    46 
       
    47 Due to strong customer demand, we added a cross-platform way to easily
       
    48 implement multi-document interfaces (known as 'MDI'). The widget is
       
    49 called QWorkspace and makes this task trivial.
       
    50 
       
    51 On X11, text dropping from Motif drag'n'drop applications has been
       
    52 added, to make your Qt applications inter-operable with those Motif
       
    53 applications that survived Y2K.
       
    54 
       
    55 The rich text system, first introduced in Qt-2.0, has been
       
    56 revised. Apart from great speed improvements, it now supports HTML
       
    57 tables as well as floating images.
       
    58 
       
    59 QMultiLineEdit, the text input field in Qt, got the missing word wrap
       
    60 functionality. It's probably the last big extension we will add to
       
    61 that widget. In Qt 3.0, it will be replaced by a fancier, faster and
       
    62 more powerful QTextEdit widget that also deals with different colors
       
    63 and fonts in a way similar to the existing QTextView.
       
    64 
       
    65 Qt follows the respective GUI style guides even more closely. This
       
    66 includes honoring desktop settings, and keyboard shortcuts such as
       
    67 Ctrl-Z/Y for undo/redo in line edit and multi-line edit
       
    68 controls. Dialog handling for both modal and non-modal dialogs has
       
    69 been improved to follow the platform conventions precisely.
       
    70 
       
    71 With QIconView, we added a powerful new visualization widget similar
       
    72 to QListView and QListBox. It contains optinally labelled pixmap items
       
    73 that the user can select, drag around, rename, delete and more.
       
    74 
       
    75 Compared to the previous release, we have managed to reduce overall
       
    76 memory consumption while improving execution speed and features.
       
    77 
       
    78 Below is a list of the major new features in existing classes as well
       
    79 as short descriptions of all new classes and the changes in some of
       
    80 the extensions shipped with Qt.
       
    81 
       
    82 
       
    83 ****************************************************************************
       
    84 * 		New major features in existing classes			   *
       
    85 ****************************************************************************
       
    86 
       
    87 QApplication	- new function wakeUpGuiThread() to simplify using threads
       
    88 		  with Qt.
       
    89 
       
    90 QArray		- added sorting and binary search.
       
    91 
       
    92 QColor		- custom color support added.  qRgb(r,g,b) helper function
       
    93 		  now sets an opaque alpha value instead of a transparent
       
    94 		  one.
       
    95 
       
    96 QComboBox	- support for text items with icons.
       
    97 
       
    98 QFileDialog	- many new features including fancy drag'n'drop
       
    99 		  and in-place renaming.
       
   100 		  Methods like setInfoPreviewWidget()and
       
   101 		  setContentsPreviewWidget() make it easy to customize
       
   102 		  the dialog extensively. With QUrlOperator and the
       
   103 		  QNetworkProtocol abstraction, the dialog can operate
       
   104 		  transparently by various different network protocols,
       
   105 		  such as HTTP and FTP (see the Network Extension).
       
   106 
       
   107 QFocusEvent	- carries a reason() for the event. Possible reasons are
       
   108 		  Mouse, Tab, ActiveWindow, ShortCut and other. The
       
   109 		  addition makes line edit controls behave properly.
       
   110 
       
   111 QHeader		- added optional visual sort indicator. Revisited API that 
       
   112 		  operates on sections only (solves the 'logical' vs. 'actual' 
       
   113 		  index confusion). A reworked 'table' example shows how
       
   114 		  to use QHeader in combination with a scrollview to create
       
   115 		  a simple spreadsheet.
       
   116 
       
   117 QListBox	- many signals and functions added for convenience and
       
   118 		  greater flexibility.
       
   119 
       
   120 QListView	- various selections modes similar to QListBox, many
       
   121 		  new functions and signals added for convenience and
       
   122 		  greater flexibility.
       
   123 
       
   124 QMainWindow	- implemented draggable and hidable toolbars. A menubar
       
   125 		  can be made draggable by simply putting it in a toolbar.
       
   126 
       
   127 QMetaObject	- Parts of the API made public. The meta object allows
       
   128 		  applications to access information about an object's
       
   129 		  properties as well as its signals and slots.
       
   130 
       
   131 QMultiLineEdit	- added different word wrap modes: WidgetWidth,
       
   132 		  FixedPixelWidth and FixedColumnWidth.
       
   133 
       
   134 QObject		- property access functions property() and setProperty().
       
   135 
       
   136 QPen		- added adjustable cap and join styles.
       
   137 
       
   138 QPopupMenu	- added support for tear-off menus, custom items
       
   139 		  and widget items.
       
   140 		  A new function setItemParameter() makes it possible
       
   141 		  to distinguish between several menu items connected to
       
   142 		  one single slot.
       
   143 
       
   144 QPrinter        - Now allows printing to the default printer without doing
       
   145                   setup() first.
       
   146 
       
   147 QProgressDialog	- auto-reset and auto-close modes.
       
   148 
       
   149 QPushButton	- added a menu button mode with setPopup().
       
   150 
       
   151 QScrollView	- support for auto-scrolling on drag move events (drag
       
   152 		  auto scroll mode).
       
   153 
       
   154 QSignal		- optional additional integer parameter for the emitted
       
   155 		  signal.
       
   156 
       
   157 QSimpleRichText - added adjustSize() function that implements a clever
       
   158 		  size hint. Vertical break support for printing. inText()
       
   159 		  hit test.
       
   160 
       
   161 QSpinBox	- different button symbols, currently UpDownArrows and
       
   162 		  PlusMinus.
       
   163 
       
   164 QSplitter	- supports three resize modes now, Stretch, KeepSize
       
   165 		  and FollowSizeHint.
       
   166 
       
   167 QString		- new functions setUnicode(), setUnicodeCodes(), setLatin1(),
       
   168 		  startsWith() and endsWith()
       
   169 
       
   170 QStringList	- new functions fromStrList(), split(), join() and grep().
       
   171 
       
   172 QStyle		- some extensions for menu button indicators, default
       
   173 		  button indicators, variable scrollbar extends and toolbar
       
   174 		  handles.
       
   175 
       
   176 QStyleSheet	- a couple of tags added to the default sheet, such as
       
   177 		  U, NOBR, HEAD, DL, DT, DD and table support (TABLE, TR,
       
   178 		  TD, TH). Many attributes added to existing tags.
       
   179 
       
   180 QTextView	- basic table support. Contents is selectable, selections
       
   181 		  can be pasted/dragged into other widgets.
       
   182 
       
   183 QToolBar	- stretchable depending on the orientation (setHorizontalStretchable()
       
   184 		  and setVerticalStretchable(). Added orientationChanged() signal.
       
   185 
       
   186 QToolButton	- added optional delayed menu with setPopup() and
       
   187 		  setPopupDelay(). Auto-raise behaviour adjustable.
       
   188 
       
   189 QWidget		- new widget flag WStyle_ContextHelp that adds a
       
   190 		  context-help button to the window titlebar. The
       
   191 		  button triggers "What's This?"-help. The flag works
       
   192 		  with MS-Windows and future versions of X11 desktops
       
   193 		  such as KDE-2.0.
       
   194 
       
   195 		- New function showFullScreen().
       
   196 
       
   197 		- Enabling and disabling with setEnabled() propagates to
       
   198 		  children.
       
   199 
       
   200 		- Changed isVisible(). It now returns whether a widget
       
   201 		  is mapped up to the toplevel widget (the previous
       
   202 		  implementation only returned isVisibleTo(parentWidget()).
       
   203 
       
   204 		- New property 'backgroundOrigin' that lets a widget draw 
       
   205 		  its background relatively to its parent widget's coordinate
       
   206 		  system. This makes pseudo-transparency possible, without
       
   207 		  the overhead of a real widget mask.
       
   208 
       
   209 
       
   210 ****************************************************************************
       
   211 *				New clases				   *
       
   212 ****************************************************************************
       
   213 
       
   214 QCustomMenuItem	- an abstract base class for custom menu items in
       
   215 		  popup menus.
       
   216 
       
   217 QFontDataBase	- provides information about the available fonts. Not really
       
   218 		  a new class (it was used internally for the QFontDialog),
       
   219 		  but for the first time public API.
       
   220 
       
   221 QGuardedPtr	- a template class that provides guarded pointers to
       
   222 		  QObjects.
       
   223 
       
   224 QIconView	- a sophisticated new widget similar to QListView and
       
   225 		  QListBox.  An iconview contains optinally labelled pixmap
       
   226 		  items that the user can select, drag around, rename, delete
       
   227 		  and more. The widget is highly optimized for speed and
       
   228 		  large amounts of icons.
       
   229 
       
   230 QInputDialog	- a convenience dialog to get some simple input values from
       
   231 		  the user.
       
   232 
       
   233 QMetaProperty	- stores meta data about properties. Part of the meta
       
   234 		  object system.
       
   235 
       
   236 QNetworkProtocol- base class for network protocols, provides
       
   237 		  a common API for network protocols.
       
   238 
       
   239 QUrl/
       
   240 QUrlOperator	- provides an easy way to work with URLs.
       
   241 
       
   242 QVariant	- a tagged union for the most common Qt data types.
       
   243 
       
   244 QValueStack	- a value-based stack container.
       
   245 
       
   246 QWorkspace	- provides a workspace that can contain decorated
       
   247 		  windows as opposed to frameless child widgets.
       
   248 		  QWorkspace makes it easy to implement a multi-document
       
   249 		  interface (MDI).
       
   250 
       
   251 QBig5Codec	- provides support for the Big5 Chinese encoding.
       
   252 
       
   253 
       
   254 ****************************************************************************
       
   255 *		Changes which may affect runtime behaviour		   *
       
   256 ****************************************************************************
       
   257 
       
   258 QDataStream / QPicture
       
   259  To accomodate for improved functionality, the stream serialization format
       
   260  of QString and QPen has changed in Qt 2.1. The format version
       
   261  number has been increased to 3. Compatibility has been kept, so
       
   262  applications built with this version of Qt are automatically able to read
       
   263  QDataStream and QPicture data generated by earlier Qt 2.x versions. But if
       
   264  your application needs to generate data that must be readable by
       
   265  applications that are compiled with earlier versions of Qt, you must use
       
   266  QDataStream::setVersion() (if the data contains QString or QPen objects).
       
   267  See the documentation of this function for further discussion.
       
   268 
       
   269 QPainter::drawPolygon()
       
   270  An outline is no longer drawn in the brush color if NoPen is specified.
       
   271  This matches the behaviour on Windows and ensures that the area
       
   272  painted in this case is the same pixels defined by a QRegion made
       
   273  from the polygon.  To get the old behaviour, you can call
       
   274  painter.setPen(painter.brush()) prior to painting, which will also
       
   275  work on Windows.
       
   276 
       
   277 QPushButton::sizeHint()
       
   278  The size hint of auto-default push buttons has been slightly
       
   279  increased in order to reserve space for a default button indicator
       
   280  frame. This is necessary for a proper Motif or Platinum emulation. If
       
   281  this change destroys your geometry management, a auto-default button
       
   282  is probably not what you wanted anyway. Simply call
       
   283  setAutoDefault(FALSE) on these push buttons to get the old behaviour.
       
   284 
       
   285 QWidget
       
   286  Font and palette propagation has changed totally (from "almost
       
   287  brain-dead" to working).  In practice, the only changes we've seen are
       
   288  to the better.
       
   289 
       
   290 QColor
       
   291  qRgb(r,g,b) now sets a default opaque alpha value of 0xff instead of
       
   292  a transparent 0x00 alpha value formerly.  Use qRgb(r,g,b,a) if you do
       
   293  need a transparent alpha value.
       
   294 
       
   295 QPalette
       
   296  It turned out that the old normal/active/disabled set of color groups
       
   297  didn't work very well, except in the simplest hello-world examples,
       
   298  that it couldn't be fixed without nasty hacks, and that during five
       
   299  years nobody had discovered the bugs.  So, we've dropped our broken
       
   300  attempt at Tcl/Tk L&F compatibility, and added support for Windows
       
   301  2000 and Macintosh L&F compatibility instead.  The Macintosh and
       
   302  Windows 2000 looks differentiate between the window with focus and
       
   303  other windows.  Qt calls the color groups QPalette::active() and
       
   304  QPalette::inactive() respectively.
       
   305 
       
   306 QGridLayout/QBoxLayout 
       
   307  setMargin() now also works on child layouts. As a result of this
       
   308  change, the geometry() of a layout now includes margin(). This may
       
   309  effect programs that use QLayout::geometry().
       
   310 
       
   311 QToolButton
       
   312  The now adjustable auto-raise behaviour defaults to TRUE only when
       
   313  a button is used inside a QToolBar. That's usually what you want. If not,
       
   314  call setAutoRaise(FALSE).