diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
commit | bd0f3345a938b35ce6a12f6150373b0955b8dd12 (patch) | |
tree | 7a520322212d48ebcb9fbe1087e7fca28b76185c /doc/html/porting.html | |
download | qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip |
Add Qt3 development HEAD version
Diffstat (limited to 'doc/html/porting.html')
-rw-r--r-- | doc/html/porting.html | 803 |
1 files changed, 803 insertions, 0 deletions
diff --git a/doc/html/porting.html b/doc/html/porting.html new file mode 100644 index 0000000..5d9d3c7 --- /dev/null +++ b/doc/html/porting.html @@ -0,0 +1,803 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/doc/porting3.doc:36 --> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Porting to Qt 3.x</title> +<style type="text/css"><!-- +fn { margin-left: 1cm; text-indent: -1cm; } +a:link { color: #004faf; text-decoration: none } +a:visited { color: #672967; text-decoration: none } +body { background: #ffffff; color: black; } +--></style> +</head> +<body> + +<table border="0" cellpadding="0" cellspacing="0" width="100%"> +<tr bgcolor="#E5E5E5"> +<td valign=center> + <a href="index.html"> +<font color="#004faf">Home</font></a> + | <a href="classes.html"> +<font color="#004faf">All Classes</font></a> + | <a href="mainclasses.html"> +<font color="#004faf">Main Classes</font></a> + | <a href="annotated.html"> +<font color="#004faf">Annotated</font></a> + | <a href="groups.html"> +<font color="#004faf">Grouped Classes</font></a> + | <a href="functions.html"> +<font color="#004faf">Functions</font></a> +</td> +<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Porting to Qt 3.x</h1> + + + +<p> This document describes porting applications from Qt 2.x to Qt 3.x. +<p> The Qt 3.x series is not binary compatible with the 2.x series. This +means programs compiled for Qt 2.x must be recompiled to work with Qt +3.x. Qt 3.x is also not completely <em>source</em> compatible with 2.x, +however all points of incompatibility cause compiler errors or +run-time messages (rather than mysterious results). Qt 3.x includes +many additional features and discards obsolete functionality. Porting +from Qt 2.x to Qt 3.x is straightforward, and once completed makes +the considerable additional power and flexibility of Qt 3.x available +for use in your applications. +<p> To port code from Qt 2.x to Qt 3.x: +<p> <ol type=1> +<p> <li> Briefly read the porting notes below to get an idea of what to expect. +<li> Be sure your code compiles and runs well on all your target platforms +with Qt 2.x. +<li> Recompile with Qt 3.x. For each error, search below for related +identifiers (e.g. function names, class names). This document +mentions all relevant identifiers to help you get the information +you need at the cost of being a little verbose. +<li> If you get stuck, ask on the <a href="http://qt-interest.trolltech.com/">qt-interest</a> mailing list, or Trolltech Technical Support if +you're a registered licensee. +<p> </ol> +<p> Table of contents: +<p> <!-- toc --> +<ul> +<li><a href="#1"> Link Errors on Windows +</a> +<li><a href="#2"> Header file inclusion changes +</a> +<li><a href="#3"> Namespace +</a> +<li><a href="#4"> Removed Functions +</a> +<li><a href="#5"> Obsoleted Functions +</a> +<li><a href="#6"> Collection Class Renaming +</a> +<li><a href="#7"> QButtonGroup +</a> +<li><a href="#8"> QDate +</a> +<li><a href="#9"> QFileDialog +</a> +<li><a href="#10"> QFont +</a> +<li><a href="#11"> QInputDialog +</a> +<li><a href="#12"> QLayout and Other Abstract Layout Classes +</a> +<li><a href="#13"> QListViewItem +</a> +<li><a href="#14"> QMoveEvent +</a> +<li><a href="#15"> QMultiLineEdit +</a> +<li><a href="#16"> QPrinter +</a> +<li><a href="#17"> QRegExp +</a> +<ul> +<li><a href="#17-1"> New special characters +</a> +<li><a href="#17-2"> QRegExp::operator=() +</a> +<li><a href="#17-3"> QRegExp::match() +</a> +<li><a href="#17-4"> QRegExp::find() +</a> +<li><a href="#17-5"> QString::findRev() and QString::contains() +</a> +<li><a href="#17-6"> QString::replace() +</a> +</ul> +<li><a href="#18"> QSemiModal +</a> +<li><a href="#19"> QSortedList +</a> +<li><a href="#20"> QTableView +</a> +<li><a href="#21"> QToolButton +</a> +<li><a href="#22"> QTextStream +</a> +<li><a href="#23"> QTranslator +</a> +<li><a href="#24"> QWidget +</a> +<li><a href="#25"> QXml Classes +</a> +<ul> +<li><a href="#25-1"> QXmlInputSource +</a> +<li><a href="#25-2"> QXmlLocator +</a> +</ul> +<li><a href="#26"> Asynchronous I/O Classes +</a> +<li><a href="#27"> Transparent widgets +</a> +<li><a href="#28"> Bezier Curves +</a> +<li><a href="#29"> Locale-aware String Comparisons in QIconView, QListBox, +QListView and QTable +</a> +</ul> +<!-- endtoc --> + +<p> <a name="Linkerrors"></a> +<h2> Link Errors on Windows +</h2> +<a name="1"></a><p> On Windows, originally in Qt 2.x, the default configuration of the Qt +library is static. If you just use the default configuration you +don't need to set certain preprocessor defines. In Qt 3.0, the +default configuration of the Qt library is to build it as a shared +library, therefore the preprocessor define <tt>QT_DLL</tt> is needed. +<p> If you use tmake with Qt 2.x, and now use qmake with Qt 3.x, then the +cause of the problem is with the project file. In the project file, +there is usually line that looks like: +<p> <tt>CONFIG</tt> = ... +<p> this should be changed to +<p> <tt>CONFIG</tt> += ... +<p> so that qmake can look at the configuration that Qt was built with and +set any relevant preprocessor defines in the makefile. +<p> <a name="Headers"></a> +<h2> Header file inclusion changes +</h2> +<a name="2"></a><p> Qt 3.x remove some unnecessary nested #include directives from +header files. This speeds up compilation when you don't need those +nested header files. But in some cases you will find you need to add +an extra #include to your files. +<p> For example, if you get a message about <a href="qstringlist.html">QStringList</a> or its functions +not being defined, then add <tt>#include <qstringlist.h></tt> at +the top of the file giving the error. +<p> Header files that you might need to add #include directives for include: +<ul> +<li> <tt><qcursor.h></tt> +<li> <tt><qpainter.h></tt> +<li> <tt><qpen.h></tt> +<li> <tt><qstringlist.h></tt> +<li> <tt><qregexp.h></tt> +<li> <tt><qstrlist.h></tt> +<li> <tt><qstyle.h></tt> +<li> <tt><qvaluelist.h></tt> +</ul> +<p> <h2> Namespace +</h2> +<a name="3"></a><p> Qt 3.x is namespace clean. A few global identifiers that had been +left in Qt 2.x have been discarded. +<p> Enumeration <a href="qt.html#CursorShape-enum">Qt::CursorShape</a> and its values are now part of the +special <a href="qt.html">Qt</a> class defined in qnamespace.h. If you get compilation +errors about these being missing (unlikely, since most of your code will +be in classes that inherit from the Qt namespace class), then apply +the following changes: +<p> <ul> +<li> <tt>QCursorShape</tt> becomes <a href="qt.html#CursorShape-enum">Qt::CursorShape</a> +<li> <tt>ArrowCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::ArrowCursor</a> +<li> <tt>UpArrowCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::UpArrowCursor</a> +<li> <tt>CrossCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::CrossCursor</a> +<li> <tt>WaitCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::WaitCursor</a> +<li> <tt>IbeamCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::IbeamCursor</a> +<li> <tt>SizeVerCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::SizeVerCursor</a> +<li> <tt>SizeHorCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::SizeHorCursor</a> +<li> <tt>SizeBDiagCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::SizeBDiagCursor</a> +<li> <tt>SizeFDiagCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::SizeFDiagCursor</a> +<li> <tt>SizeAllCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::SizeAllCursor</a> +<li> <tt>BlankCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::BlankCursor</a> +<li> <tt>SplitVCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::SplitVCursor</a> +<li> <tt>SplitHCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::SplitHCursor</a> +<li> <tt>PointingHandCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::PointingHandCursor</a> +<li> <tt>BitmapCursor</tt> becomes <a href="qt.html#CursorShape-enum">Qt::BitmapCursor</a> +</ul> +<p> The names of some debugging macro variables have been changed. We have +tried not to break source compatibility as much as possible. If you observe +error messages on the UNIX console or the Windows debugging stream that were +previously disabled, please check these macro variables: +<p> <ul> +<li> <tt>DEBUG</tt> becomes <tt>QT_DEBUG</tt> +<li> <tt>NO_DEBUG</tt> becomes <tt>QT_NO_DEBUG</tt> +<li> <tt>NO_CHECK</tt> becomes <tt>QT_NO_CHECK</tt> +<li> <tt>CHECK_STATE</tt> becomes <tt>QT_CHECK_STATE</tt> +<li> <tt>CHECK_RANGE</tt> becomes <tt>QT_CHECK_RANGE</tt> +<li> <tt>CHECK_NULL</tt> becomes <tt>QT_CHECK_NULL</tt> +<li> <tt>CHECK_MATH</tt> becomes <tt>QT_CHECK_MATH</tt> +</ul> +<p> The name of some debugging macro functions has been changed as well +but source compatibility should not be affected if the macro variable +<tt>QT_CLEAN_NAMESPACE</tt> is not defined: +<p> <ul> +<li> <tt>ASSERT</tt> becomes <tt>Q_ASSERT</tt> +<li> <tt>CHECK_PTR</tt> becomes <tt>Q_CHECK_PTR</tt> +</ul> +<p> For the record, undocumented macro variables that are not part of the API +have been changed: +<p> <ul> +<li> <tt>_OS_*_</tt> becomes <tt>Q_OS_*</tt> +<li> <tt>_WS_*_</tt> becomes <tt>Q_WS_*</tt> +<li> <tt>_CC_*_</tt> becomes <tt>Q_CC_*</tt> +</ul> +<p> <h2> Removed Functions +</h2> +<a name="4"></a><p> All these functions have been removed in Qt 3.x: +<ul> +<li> QFont::charSet() +<li> QFont::setCharSet() +<li> QMenuBar::setActItem() +<li> QMenuBar::setWindowsAltMode() +<li> QObject::initMetaObject() +<li> QPainter::drawQuadBezier() +<li> QPointArray::quadBezier() +<li> QRegExp::find() +<li> QSpinBox::downButton() +<li> QSpinBox::upButton() +<li> QString::basicDirection() +<li> QString::visual() +<li> QStyle::set...() functions +<li> QStyle::drawArrow() +<li> QWidget::setFontPropagation() +<li> QWidget::setPalettePropagation() +</ul> +<p> Also, to avoid conflicts with <tt><iostream></tt>, the following three +global functions have been renamed: +<ul> +<li> setw() (renamed qSetW()) +<li> setfill() (renamed qSetFill()) +<li> setprecision() (renamed qSetPrecision()) +</ul> +<p> <h2> Obsoleted Functions +</h2> +<a name="5"></a><p> The following functions have been obsoleted in Qt 3.0. The +documentation of each of these functions should explain how to +replace them in Qt 3.0. +<p> <b>Warning:</b> It is best to consult <a href="http://doc.trolltech.com/3.0/">http://doc.trolltech.com/3.0/</a> +rather than the documentation supplied with Qt to obtain the latest +information regarding obsolete functions and how to replace them in +new code. +<p> <ul> +<li> <a href="qaccel.html#keyToString">QAccel::keyToString</a>( <a href="qkeysequence.html">QKeySequence</a> k ) +<li> <a href="qaccel.html#stringToKey">QAccel::stringToKey</a>( const <a href="qstring.html">QString</a> & s ) +<li> <a href="qactiongroup.html#insert">QActionGroup::insert</a>( <a href="qaction.html">QAction</a> *a ) +<li> <a href="qbutton.html#autoResize">QButton::autoResize</a>() const +<li> <a href="qbutton.html#setAutoResize">QButton::setAutoResize</a>( bool ) +<li> <a href="qcanvasitem.html#active">QCanvasItem::active</a>() const +<li> <a href="qcanvasitem.html#enabled">QCanvasItem::enabled</a>() const +<li> <a href="qcanvasitem.html#selected">QCanvasItem::selected</a>() const +<li> <a href="qcanvasitem.html#visible">QCanvasItem::visible</a>() const +<li> <a href="qcanvaspixmaparray.html#QCanvasPixmapArray">QCanvasPixmapArray::QCanvasPixmapArray</a>( <a href="qptrlist.html">QPtrList</a><QPixmap> list, QPtrList<QPoint> hotspots ) +<li> <a href="qcanvaspixmaparray.html#operator!">QCanvasPixmapArray::operator!</a>() +<li> <a href="qcolorgroup.html#QColorGroup">QColorGroup::QColorGroup</a>( const <a href="qcolor.html">QColor</a> & foreground, const QColor & background, const QColor & light, const QColor & dark, const QColor & mid, const QColor & text, const QColor & base ) +<li> <a href="qcombobox.html#autoResize">QComboBox::autoResize</a>() const +<li> <a href="qcombobox.html#setAutoResize">QComboBox::setAutoResize</a>( bool ) +<li> <a href="qdate.html#dayName">QDate::dayName</a>( int weekday ) +<li> <a href="qdate.html#monthName">QDate::monthName</a>( int month ) +<li> <a href="qdir.html#encodedEntryList">QDir::encodedEntryList</a>( const <a href="qstring.html">QString</a> & nameFilter, int filterSpec = DefaultFilter, int sortSpec = DefaultSort ) const +<li> QDir::encodedEntryList( int filterSpec = DefaultFilter, int sortSpec = DefaultSort ) const +<li> <a href="qdockwindow.html#isHorizontalStretchable">QDockWindow::isHorizontalStretchable</a>() const +<li> <a href="qdockwindow.html#isVerticalStretchable">QDockWindow::isVerticalStretchable</a>() const +<li> <a href="qdockwindow.html#setHorizontalStretchable">QDockWindow::setHorizontalStretchable</a>( bool b ) +<li> <a href="qdockwindow.html#setVerticalStretchable">QDockWindow::setVerticalStretchable</a>( bool b ) +<li> <a href="qfont.html#defaultFont">QFont::defaultFont</a>() +<li> <a href="qfont.html#setDefaultFont">QFont::setDefaultFont</a>( const <a href="qfont.html">QFont</a> & f ) +<li> <a href="qfont.html#setPixelSizeFloat">QFont::setPixelSizeFloat</a>( float pixelSize ) +<li> <a href="qfontdatabase.html#bold">QFontDatabase::bold</a>( const QString & family, const QString & style, const <a href="qstring.html">QString</a> & ) const +<li> <a href="qfontdatabase.html#families">QFontDatabase::families</a>( bool ) const +<li> <a href="qfontdatabase.html#font">QFontDatabase::font</a>( const QString & familyName, const QString & style, int pointSize, const QString & ) +<li> <a href="qfontdatabase.html#isBitmapScalable">QFontDatabase::isBitmapScalable</a>( const QString & family, const QString & style, const QString & ) const +<li> <a href="qfontdatabase.html#isFixedPitch">QFontDatabase::isFixedPitch</a>( const QString & family, const QString & style, const QString & ) const +<li> <a href="qfontdatabase.html#isScalable">QFontDatabase::isScalable</a>( const QString & family, const QString & style, const QString & ) const +<li> <a href="qfontdatabase.html#isSmoothlyScalable">QFontDatabase::isSmoothlyScalable</a>( const QString & family, const QString & style, const QString & ) const +<li> <a href="qfontdatabase.html#italic">QFontDatabase::italic</a>( const <a href="qstring.html">QString</a> & family, const QString & style, const QString & ) const +<li> <a href="qfontdatabase.html#pointSizes">QFontDatabase::pointSizes</a>( const QString & family, const QString & style, const QString & ) +<li> <a href="qfontdatabase.html#smoothSizes">QFontDatabase::smoothSizes</a>( const QString & family, const QString & style, const QString & ) +<li> <a href="qfontdatabase.html#styles">QFontDatabase::styles</a>( const QString & family, const QString & ) const +<li> <a href="qfontdatabase.html#weight">QFontDatabase::weight</a>( const QString & family, const QString & style, const QString & ) const +<li> <a href="qlabel.html#autoResize">QLabel::autoResize</a>() const +<li> <a href="qlabel.html#setAutoResize">QLabel::setAutoResize</a>( bool enable ) +<li> <a href="qlineedit.html#cursorLeft">QLineEdit::cursorLeft</a>( bool mark, int steps = 1 ) +<li> <a href="qlineedit.html#cursorRight">QLineEdit::cursorRight</a>( bool mark, int steps = 1 ) +<li> <a href="qlineedit.html#hasMarkedText">QLineEdit::hasMarkedText</a>() const +<li> <a href="qlineedit.html#markedText">QLineEdit::markedText</a>() const +<li> <a href="qlineedit.html#repaintArea">QLineEdit::repaintArea</a>( int, int ) +<li> <a href="qlistbox.html#cellHeight">QListBox::cellHeight</a>( int i ) const +<li> QListBox::cellHeight() const +<li> <a href="qlistbox.html#cellWidth">QListBox::cellWidth</a>() const +<li> <a href="qlistbox.html#findItem">QListBox::findItem</a>( int yPos ) const +<li> <a href="qlistbox.html#inSort">QListBox::inSort</a>( const <a href="qlistboxitem.html">QListBoxItem</a> *lbi ) +<li> QListBox::inSort( const <a href="qstring.html">QString</a> & text ) +<li> <a href="qlistbox.html#itemYPos">QListBox::itemYPos</a>( int index, int *yPos ) const +<li> <a href="qlistbox.html#numCols">QListBox::numCols</a>() const +<li> <a href="qlistbox.html#totalHeight">QListBox::totalHeight</a>() const +<li> <a href="qlistbox.html#totalWidth">QListBox::totalWidth</a>() const +<li> <a href="qlistboxitem.html#current">QListBoxItem::current</a>() const +<li> <a href="qlistboxitem.html#selected">QListBoxItem::selected</a>() const +<li> <a href="qlistview.html#removeItem">QListView::removeItem</a>( <a href="qlistviewitem.html">QListViewItem</a> *item ) +<li> <a href="qlistviewitem.html#removeItem">QListViewItem::removeItem</a>( QListViewItem *item ) +<li> <a href="qmainwindow.html#addToolBar">QMainWindow::addToolBar</a>( <a href="qdockwindow.html">QDockWindow</a> *, Dock = DockTop, bool newLine = FALSE ) +<li> QMainWindow::addToolBar( QDockWindow *, const QString & label, Dock = DockTop, bool newLine = FALSE ) +<li> <a href="qmainwindow.html#lineUpToolBars">QMainWindow::lineUpToolBars</a>( bool keepNewLines = FALSE ) +<li> <a href="qmainwindow.html#moveToolBar">QMainWindow::moveToolBar</a>( QDockWindow *, Dock = DockTop ) +<li> QMainWindow::moveToolBar( QDockWindow *, Dock, bool nl, int index, int extraOffset = -1 ) +<li> <a href="qmainwindow.html#removeToolBar">QMainWindow::removeToolBar</a>( QDockWindow *) +<li> <a href="qmainwindow.html#setToolBarsMovable">QMainWindow::setToolBarsMovable</a>( bool ) +<li> <a href="qmainwindow.html#toolBarPositionChanged">QMainWindow::toolBarPositionChanged</a>( <a href="qtoolbar.html">QToolBar</a> *) +<li> <a href="qmainwindow.html#toolBarsMovable">QMainWindow::toolBarsMovable</a>() const +<li> <a href="qmessagebox.html#message">QMessageBox::message</a>( const <a href="qstring.html">QString</a> & caption, const QString & text, const QString & buttonText = <a href="qstring.html#QString-null">QString::null</a>, <a href="qwidget.html">QWidget</a> *parent = 0, const char *= 0 ) +<li> <a href="qmessagebox.html#query">QMessageBox::query</a>( const QString & caption, const QString & text, const QString & yesButtonText = QString::null, const QString & noButtonText = QString::null, QWidget *parent = 0, const char *= 0 ) +<li> <a href="qmessagebox.html#standardIcon">QMessageBox::standardIcon</a>( Icon icon, GUIStyle style ) +<li> <a href="qpalette.html#normal">QPalette::normal</a>() +<li> <a href="qregexp.html#match">QRegExp::match</a>( const QString & str, int index = 0, int *len = 0, bool indexIsStart = TRUE ) const +<li> <a href="qscrollview.html#childIsVisible">QScrollView::childIsVisible</a>( QWidget *child ) +<li> <a href="qscrollview.html#showChild">QScrollView::showChild</a>( QWidget *child, bool show = TRUE ) +<li> <a href="qsignal.html#block">QSignal::block</a>( bool b ) +<li> <a href="qsignal.html#isBlocked">QSignal::isBlocked</a>() const +<li> <a href="qsignal.html#parameter">QSignal::parameter</a>() const +<li> <a href="qsignal.html#setParameter">QSignal::setParameter</a>( int value ) +<li> <a href="qsimplerichtext.html#draw">QSimpleRichText::draw</a>( <a href="qpainter.html">QPainter</a> *p, int x, int y, const <a href="qregion.html">QRegion</a> & clipRegion, const <a href="qcolorgroup.html">QColorGroup</a> & cg, const <a href="qbrush.html">QBrush</a> *paper = 0 ) const +<li> <a href="qstring.html#ascii">QString::ascii</a>() const +<li> <a href="qstring.html#data">QString::data</a>() const +<li> <a href="qstring.html#setExpand">QString::setExpand</a>( uint index, <a href="qchar.html">QChar</a> c ) +<li> <a href="qstyle.html#defaultFrameWidth">QStyle::defaultFrameWidth</a>() const +<li> <a href="qstyle.html#scrollBarExtent">QStyle::scrollBarExtent</a>() const +<li> <a href="qstyle.html#tabbarMetrics">QStyle::tabbarMetrics</a>( const <a href="qwidget.html">QWidget</a> *t, int & hf, int & vf, int & ov ) const +<li> <a href="qtabdialog.html#isTabEnabled">QTabDialog::isTabEnabled</a>( const char *name ) const +<li> <a href="qtabdialog.html#selected">QTabDialog::selected</a>( const <a href="qstring.html">QString</a> & ) +<li> QTabDialog::selected( const QString & tabLabel ) +<li> <a href="qtabdialog.html#setTabEnabled">QTabDialog::setTabEnabled</a>( const char *name, bool enable ) +<li> <a href="qtextstream.html#QTextStream">QTextStream::QTextStream</a>( QString & str, int filemode ) +<li> <a href="qtoolbar.html#QToolBar">QToolBar::QToolBar</a>( const QString & label, <a href="qmainwindow.html">QMainWindow</a> *, ToolBarDock = DockTop, bool newLine = FALSE, const char *name = 0 ) +<li> <a href="qtoolbutton.html#iconSet">QToolButton::iconSet</a>( bool on ) const +<li> <a href="qtoolbutton.html#offIconSet">QToolButton::offIconSet</a>() const +<li> <a href="qtoolbutton.html#onIconSet">QToolButton::onIconSet</a>() const +<li> <a href="qtoolbutton.html#setIconSet">QToolButton::setIconSet</a>( const <a href="qiconset.html">QIconSet</a> & set, bool on ) +<li> <a href="qtoolbutton.html#setOffIconSet">QToolButton::setOffIconSet</a>( const QIconSet & ) +<li> <a href="qtoolbutton.html#setOnIconSet">QToolButton::setOnIconSet</a>( const QIconSet & ) +<li> <a href="qtooltip.html#enabled">QToolTip::enabled</a>() +<li> <a href="qtooltip.html#setEnabled">QToolTip::setEnabled</a>( bool enable ) +<li> <a href="qtranslator.html#find">QTranslator::find</a>( const char *context, const char *sourceText, const char *comment = 0 ) const +<li> <a href="qtranslator.html#insert">QTranslator::insert</a>( const char *context, const char *sourceText, const <a href="qstring.html">QString</a> & translation ) +<li> <a href="qtranslator.html#remove">QTranslator::remove</a>( const char *context, const char *sourceText ) +<li> <a href="quridrag.html#setFilenames">QUriDrag::setFilenames</a>( const <a href="qstringlist.html">QStringList</a> & fnames ) +<li> <a href="qwidget.html#backgroundColor">QWidget::backgroundColor</a>() const +<li> <a href="qwidget.html#backgroundPixmap">QWidget::backgroundPixmap</a>() const +<li> <a href="qwidget.html#iconify">QWidget::iconify</a>() +<li> <a href="qwidget.html#setBackgroundColor">QWidget::setBackgroundColor</a>( const <a href="qcolor.html">QColor</a> & c ) +<li> <a href="qwidget.html#setBackgroundPixmap">QWidget::setBackgroundPixmap</a>( const <a href="qpixmap.html">QPixmap</a> & pm ) +<li> <a href="qwidget.html#setFont">QWidget::setFont</a>( const <a href="qfont.html">QFont</a> & f, bool ) +<li> <a href="qwidget.html#setPalette">QWidget::setPalette</a>( const <a href="qpalette.html">QPalette</a> & p, bool ) +<li> <a href="qwizard.html#setFinish">QWizard::setFinish</a>( <a href="qwidget.html">QWidget</a> *, bool ) +<li> <a href="qxmlinputsource.html#QXmlInputSource">QXmlInputSource::QXmlInputSource</a>( <a href="qfile.html">QFile</a> & file ) +<li> QXmlInputSource::QXmlInputSource( <a href="qtextstream.html">QTextStream</a> & stream ) +<li> <a href="qxmlreader.html#parse">QXmlReader::parse</a>( const <a href="qxmlinputsource.html">QXmlInputSource</a> & input ) +</ul> +<p> Additionally, these preprocessor directives have been removed: +<p> <ul> +<li> <tt>#define strlen qstrlen</tt> +<li> <tt>#define strcpy qstrcpy</tt> +<li> <tt>#define strcmp qstrcmp</tt> +<li> <tt>#define strncmp qstrncmp</tt> +<li> <tt>#define stricmp qstricmp</tt> +<li> <tt>#define strnicmp qstrnicmp</tt> +</ul> +<p> See the changes-3.0.0 document for an explanation of why this had to be done. +You might have been relying on the non-portable and unpredictable behavior +resulting from these directives. We strongly recommend that you either make +use of the safe qstr* variants directly or ensure that no 0 pointer is +passed to the standard C functions in your code base. +<p> <h2> Collection Class Renaming +</h2> +<a name="6"></a><p> The classes QArray, QCollection, QList, QListIterator, QQueue, QStack +and QVector have been renamed. To ease porting, the old names and the +old header-file names are still supported. +<p> <center><table cellpadding="4" cellspacing="2" border="0"> +<tr bgcolor="#a2c511"> <th valign="top">Old Name <th valign="top">New Name <th valign="top">New Header File +<tr bgcolor="#f0f0f0"> <td valign="top">QArray <td valign="top"><a href="qmemarray.html">QMemArray</a> <td valign="top"><tt><qmemarray.h></tt> +<tr bgcolor="#d0d0d0"> <td valign="top">QCollection <td valign="top"><a href="qptrcollection.html">QPtrCollection</a> <td valign="top"><tt><qptrcollection.h></tt> +<tr bgcolor="#f0f0f0"> <td valign="top">QList <td valign="top"><a href="qptrlist.html">QPtrList</a> <td valign="top"><tt><qptrlist.h></tt> +<tr bgcolor="#d0d0d0"> <td valign="top">QListIterator <td valign="top"><a href="qptrlistiterator.html">QPtrListIterator</a> <td valign="top"><tt><qptrlist.h></tt> +<tr bgcolor="#f0f0f0"> <td valign="top">QQueue <td valign="top"><a href="qptrqueue.html">QPtrQueue</a> <td valign="top"><tt><qptrqueue.h></tt> +<tr bgcolor="#d0d0d0"> <td valign="top">QStack <td valign="top"><a href="qptrstack.html">QPtrStack</a> <td valign="top"><tt><qptrstack.h></tt> +<tr bgcolor="#f0f0f0"> <td valign="top">QVector <td valign="top"><a href="qptrvector.html">QPtrVector</a> <td valign="top"><tt><qptrvector.h></tt> +</table></center> +<p> <h2> <a href="qbuttongroup.html">QButtonGroup</a> +</h2> +<a name="7"></a><p> In Qt 2.x, the function <a href="qbuttongroup.html#selected">QButtonGroup::selected</a>() returns the selected +<em>radio</em> button (<a href="qradiobutton.html">QRadioButton</a>). In Qt 3.0, it returns the selected <em>toggle</em> button (<a href="qbutton.html#toggleButton-prop">QButton::toggleButton</a>), a more general concept. +This might affect programs that use QButtonGroups that contain a +mixture of radio buttons and non-radio (e.g. <a href="qcheckbox.html">QCheckBox</a>) toggle buttons. +<p> <h2> <a href="qdate.html">QDate</a> +</h2> +<a name="8"></a><p> Two QDate member functions that were virtual in Qt 2.0 are not virtual +in Qt 3.0. This is only relevant if you subclassed QDate and +reimplemented these functions: +<p> <ul> +<li> <a href="qstring.html">QString</a> <a href="qdate.html#monthName">QDate::monthName</a>( int month ) const +<li> QString <a href="qdate.html#dayName">QDate::dayName</a>( int weekday ) const +</ul> +<p> In addition to no longer being virtual, QDate::monthName() and +QDate::dayName() have been renamed <a href="qdate.html#shortMonthName">QDate::shortMonthName</a>() and +<a href="qdate.html#shortDayName">QDate::shortDayName</a>() and have been made static (as they should had +been in the first place). The old names are still provided for source +compatibility. +<p> <h2> <a href="qfiledialog.html">QFileDialog</a> +</h2> +<a name="9"></a><p> If the mode was not set explicitly, and the user entered a +non-existent file, the dialog would accept this. In Qt 3.x, you must +set the mode, e.g. setMode(QFileDialog::AnyFile), to get the same +behavior. +<p> <h2> <a href="qfont.html">QFont</a> +</h2> +<a name="10"></a><p> The internals of QFont have changed significantly between Qt 2.2 and +Qt 3.0, to give better Unicode support and to make developing +internationalized applications easier. The original API has been +preserved with minimal changes. The CharSet enum and its related +functions have disappeared. This is because Qt now handles all charset +related issues internally, and removes this burden from the developer. +<p> If you used the CharSet enum or its related functions, e.g +QFont::charSet() or QFont::setCharSet(), just remove them from your +code. There are a few functions that took a QFont::CharSet as a +parameter; in these cases simply remove the charset from the +parameter list. +<p> <h2> <a href="qinputdialog.html">QInputDialog</a> +</h2> +<a name="11"></a><p> The two static getText(...) methods in QInputDialog have been merged. +The <tt>echo</tt> parameter is the third parameter and defaults to +QLineEdit::Normal. +<p> If you used calls to <a href="qinputdialog.html#getText">QInputDialog::getText</a>(...) that provided more +than the first two required parameters you will must add a value +for the <tt>echo</tt> parameter. +<p> <h2> <a href="qlayout.html">QLayout</a> and Other Abstract Layout Classes +</h2> +<a name="12"></a><p> The definitions of <a href="qglayoutiterator.html">QGLayoutIterator</a>, <a href="qlayout.html">QLayout</a>, <a href="qlayoutitem.html">QLayoutItem</a>, <a href="qlayoutiterator.html">QLayoutIterator</a>, <a href="qspaceritem.html">QSpacerItem</a> and <a href="qwidgetitem.html">QWidgetItem</a> have been moved from <tt><qabstractlayout.h></tt> to <tt><qlayout.h></tt>. The header <tt><qabstractlayout.h></tt> now includes <tt><qlayout.h></tt> for compatibility. It +might be removed in a future version. +<p> <h2> <a href="qlistviewitem.html">QListViewItem</a> +</h2> +<a name="13"></a><p> The paintBranches() function in Qt 2.x had a GUIStyle parameter; this +has been dropped for Qt 3.x since GUI style is handled by the new +style engine (See <a href="qstyle.html">QStyle</a>.) +<p> <h2> <a href="qmoveevent.html">QMoveEvent</a> +</h2> +<a name="14"></a><p> In Qt 2.x, the function <a href="qmoveevent.html#pos">QMoveEvent::pos</a>() returned the position of the +widget in its parent widget, including the window frame. In Qt 3.0, +it returns the new position of the widget, excluding window frame for +top level widgets. +<p> <h2> QMultiLineEdit +</h2> +<a name="15"></a><p> The QMultiLineEdit was a simple editor widget in previous Qt versions. +Since Qt 3.0 includes a new richtext engine, which also supports +editing, QMultiLineEdit is obsolete. For the sake of compatibility +QMultiLineEdit is still provided. It is now a subclass of <a href="qtextedit.html">QTextEdit</a> +which wraps the old QMultiLineEdit so that it is mostly source +compatible to keep old applications working. +<p> For new applications and when maintaining existing applications we +recommend that you use QTextEdit instead of QMultiLineEdit wherever +possible. +<p> Although most of the old QMultiLineEdit API is still available, there +is one important difference. The old QMultiLineEdit operated in terms +of lines, whereas QTextEdit operates in terms of paragraphs. This is +because lines change all the time during wordwrap, whereas paragraphs +remain paragraphs. The consequence of this change is that functions +which previously operated on lines, e.g. numLines(), textLine(), etc., +now work on paragraphs. +<p> Also the function getString() has been removed since it +published the internal data structure. +<p> In most cases, applications that used QMultiLineEdit will continue to +work without problems. Applications that worked in terms of lines may +require some porting. +<p> The source code for the old 2.x version of QMultiLineEdit can be found +in <tt>$QTDIR/src/attic/qtmultilineedit.h/cpp</tt>. Note that the class has +been renamed to QtMultiLineEdit to avoid name clashes. If you really +need to keep compatibility with the old QMultiLineEdit, simply include +this class in your project and rename QMultiLineEdit to +QtMultiLineEdit throughout. +<p> <h2> <a href="qprinter.html">QPrinter</a> +</h2> +<a name="16"></a><p> QPrinter has undergone some changes, to make it more flexible and +to ensure it has the same runtime behaviour on both Unix and Windows. In 2.x, +QPrinter behaved differently on Windows and Unix, when using view +transformations on the <a href="qpainter.html">QPainter</a>. This has changed now, and QPrinter +behaves consistently across all platforms. A compatibilty mode has been +added that forces the old behaviour, to ease porting from Qt 2.x +to Qt 3.x. This compatibilty mode can be enabled by passing the +QPrinter::Compatible flag to the QPrinter constructor. +<p> On X11, QPrinter used to generate encapsulated postscript when +fullPage() was TRUE and only one page was printed. This does not +happen by default anymore, providing a more consistent printing output. +<p> <h2> <a href="qregexp.html">QRegExp</a> +</h2> +<a name="17"></a><p> The <a href="qregexp.html">QRegExp</a> class has been rewritten to support many of the features of Perl +regular expressions. Both the <a href="qregexp.html#regular-expression">regular expression</a> syntax and the QRegExp +interface have been modified. +<p> Be also aware that <tt><qregexp.h></tt> is no longer included +automatically when you include <tt><qstringlist.h></tt>. See +<a href="#Headers">above</a> for details. +<p> +<p> <h3> New special characters +</h3> +<a name="17-1"></a><p> There are five new special characters: <tt>(</tt>, <tt>)</tt>, <tt>{</tt>, +<tt>|</tt> and <tt>}</tt> (parentheses, braces and pipe). When porting old +regular expressions, you must add <tt>\</tt> (backslash) in front of any +of these (actually, <tt>\\</tt> in C++ strings), unless it is already +there. +<p> Example: Old code like +<pre> + <a href="qregexp.html">QRegExp</a> rx( "([0-9|]*\\)" ); // works in Qt 2.x +</pre> + +should be converted into +<pre> + <a href="qregexp.html">QRegExp</a> rx( "\\([0-9\\|]*\\)" ); // works in Qt 2.x and 3.x +</pre> + +(Within character classes, the backslash is not necessary in front of certain +characters, e.g. <tt>|</tt>, but it doesn't hurt.) +<p> Wildcard patterns need no conversion. Here are two examples: +<pre> + <a href="qregexp.html">QRegExp</a> wild( "(*.*)" ); + wild.<a href="qregexp.html#setWildcard">setWildcard</a>( TRUE ); +</pre> + +<pre> + // TRUE as third argument means wildcard + <a href="qregexp.html">QRegExp</a> wild( "(*.*)", FALSE, TRUE ); +</pre> + +However, when they are used, make sure to use <a href="qregexp.html#exactMatch">QRegExp::exactMatch</a>() +rather than the obsolete <a href="qregexp.html#match">QRegExp::match</a>(). QRegExp::match(), like +QRegExp::find(), tries to find a match somewhere in the target +string, while QRegExp::exactMatch() tries to match the whole target +string. +<p> <h3> <a href="qregexp.html#operator-eq">QRegExp::operator=</a>() +</h3> +<a name="17-2"></a><p> This function has been replaced by <a href="qregexp.html#setPattern">QRegExp::setPattern</a>() in Qt 2.2. +Old code such as +<pre> + <a href="qregexp.html">QRegExp</a> rx( "alpha" ); + rx.<a href="qregexp.html#setCaseSensitive">setCaseSensitive</a>( FALSE ); + rx.<a href="qregexp.html#setWildcard">setWildcard</a>( TRUE ); + rx = "beta"; +</pre> + +still compiles with Qt 3, but produces a different result (the case sensitivity +and wildcard options are forgotten). This way, +<pre> + rx = "beta"; +</pre> + +is the same as +<pre> + rx = QRegExp( "beta" ); +</pre> + +which is what one expects. +<p> <h3> QRegExp::match() +</h3> +<a name="17-3"></a><p> The following function is now obsolete, as it has an unwieldy +parameter list and was poorly named: +<ul> +<li> bool <a href="qregexp.html#match">QRegExp::match</a>( const <a href="qstring.html">QString</a> & str, int index = 0, +int * len = 0, bool indexIsStart = TRUE ) const +</ul> +It will be removed in a future version of Qt. Its <a href="qregexp.html#match">documentation</a> explains how to replace it. +<p> <h3> QRegExp::find() +</h3> +<a name="17-4"></a><p> This function was removed, after a brief appearance in Qt 2.2. Its +name clashed with <a href="qstring.html#find">QString::find</a>(). Use <a href="qregexp.html#search">QRegExp::search</a>() or <a href="qstring.html#find">QString::find</a>() instead. +<p> <h3> <a href="qstring.html#findRev">QString::findRev</a>() and <a href="qstring.html#contains">QString::contains</a>() +</h3> +<a name="17-5"></a><p> <a href="qstring.html#findRev">QString::findRev</a>()'s and <a href="qstring.html#contains">QString::contains</a>()'s semantics have changed +between 2.0 and 3.0 to be more consistent with the other overloads. +<p> For example, +<pre> + QString( "" ).contains( QRegExp("") ) +</pre> + +returns 1 in Qt 2.0; it returns 0 in Qt 3.0. Also, "^" now really means +start of input, so +<pre> + QString( "Heisan Hoppsan" ).contains( QRegExp("^.*$") ) +</pre> + +returns 1, not 13 or 14. +<p> This change affect very few existing programs. +<p> <h3> <a href="qstring.html#replace">QString::replace</a>() +</h3> +<a name="17-6"></a><p> With Qt 1.0 and 2.0, a <a href="qstring.html">QString</a> is converted implicitly into a <a href="qregexp.html">QRegExp</a> +as the first argument to QString::replace(): +<pre> + <a href="qstring.html">QString</a> text = fetch_it_from_somewhere(); + text.<a href="qstring.html#replace">replace</a>( QString("[A-Z]+"), "" ); +</pre> + +With Qt 3.0, the compiler gives an error. The solution is to use a +QRegExp cast: +<pre> + text.replace( QRegExp("[A-Z]+"), "" ); +</pre> + +This change makes it possible to introduce a +QString::replace(QString, QString) overload in a future version of Qt +without breaking source compatibility. +<p> <h2> QSemiModal +</h2> +<a name="18"></a><p> The QSemiModal class is now obsolete. You should call show() on a +modal dialog instead. +<p> <h2> QSortedList +</h2> +<a name="19"></a><p> The QSortedList class is now obsolete. Consider using a <a href="qdict.html">QDict</a>, a <a href="qmap.html">QMap</a> +or a plain <a href="qptrlist.html">QPtrList</a> instead. +<p> <h2> QTableView +</h2> +<a name="20"></a><p> The QTableView class has been obsoleted and is no longer a part of the +Qt API. Either use the powerful <a href="qtable.html">QTable</a> class or the simplistic +<a href="qgridview.html">QGridView</a> in any new code you create. If you really need the old table +view for compatibility you can find it in <tt>$QTDIR/src/attic/qttableview.{cpp,h}</tt>. Note that the class has been +renamed from QTableView to QtTableView to avoid name clashes. To use +it, simply include it in your project and rename QTableView to +QtTableView throughout. +<p> <h2> <a href="qtoolbutton.html">QToolButton</a> +</h2> +<a name="21"></a><p> The <a href="qtoolbutton.html">QToolButton</a> class used to distinguish between "on" and "off" +icons. In 3.0, this mechanism was moved into the <a href="qiconset.html">QIconSet</a> class +(see <a href="qiconset.html#State-enum">QIconSet::State</a>). +<p> The old <a href="qtoolbutton.html#onIconSet-prop">QToolButton::onIconSet</a> and <a href="qtoolbutton.html#offIconSet-prop">QToolButton::offIconSet</a> +properties are still provided so that old source will compile, but +their semantics have changed: they are now synonyms for <a href="qtoolbutton.html#iconSet-prop">QToolButton::iconSet</a>. If you used that distinction in Qt 2.x, you will +need to adjust your code to use the <a href="qiconset.html">QIconSet</a> On/Off mechanism. +<p> Likewise, the <em>on</em> parameter of these two functions is now ignored: +<p> <ul> +<li> void QToolButton::setIconSet ( const QIconSet & set, bool on ) +<li> QIconSet QToolButton::iconSet ( bool on ) const +</ul> +<p> These functions are only provided for ease of porting. New code +should use the following instead: +<p> <ul> +<li> void <a href="qtoolbutton.html#setIconSet">QToolButton::setIconSet</a>( const QIconSet & set ) +<li> QIconSet <a href="qtoolbutton.html#iconSet">QToolButton::iconSet</a>() const +</ul> +<p> Finally, this function is no longer virtual: +<p> <ul> +<li> void QToolButton::setIconSet( const QIconSet & set, bool on ) +</ul> +<p> If you have a class that inherits <a href="qtoolbutton.html">QToolButton</a> and that reimplements +QToolButton::setIconSet(), you should make the signature of the +reimplementation agree with the new <a href="qtoolbutton.html#setIconSet">QToolButton::setIconSet</a>(), +a virtual function. +<p> <h2> <a href="qtextstream.html">QTextStream</a> +</h2> +<a name="22"></a><p> The global QTextStream manipulators setw(), setfill() and setprecison() +were renamed to qSetW(), qSetFill() and qSetPrecision() to avoid conflicts +with <tt><iostream.h></tt>. If you used them, you must rename the occurrences to +the new names. +<p> <h2> <a href="qtranslator.html">QTranslator</a> +</h2> +<a name="23"></a><p> The <a href="qtranslator.html">QTranslator</a> class was extended in Qt 2.2, and these extensions +lead to a new interface. This interface is used mainly by translation +tools (for example, <a href="linguist-manual.html">Qt +Linguist</a>). For source compatibility, no member function was +effectively removed. The <a href="qtranslator.html">QTranslator</a> documentation points out +which functions are obsolete. +<p> This function is no longer virtual: +<p> <ul> +<li> <a href="qstring.html">QString</a> <a href="qtranslator.html#find">QTranslator::find</a>( const char * context, +const char * sourceText ) const +</ul> +<p> If you have a class that inherits QTranslator and which reimplements +QTranslator::find(), you should reimplement <a href="qtranslator.html#findMessage">QTranslator::findMessage</a>() instead. +In fact, find() is now defined in terms of findMessage(). By doing the +conversion, you will also gain support for translator comments and for any +future extensions. +<p> <h2> <a href="qwidget.html">QWidget</a> +</h2> +<a name="24"></a><p> <a href="qwidget.html#backgroundColor">QWidget::backgroundColor</a>(), <a href="qwidget.html#setBackgroundColor">QWidget::setBackgroundColor</a>(), +<a href="qwidget.html#backgroundPixmap">QWidget::backgroundPixmap</a>() and <a href="qwidget.html#setBackgroundPixmap">QWidget::setBackgroundPixmap</a>() have +often been the source of much confusion in previous releases. Qt 3.0 +addresses this by obsoleting these functions and by replacing them +with eight new functions: <a href="qwidget.html#eraseColor">QWidget::eraseColor</a>(), +<a href="qwidget.html#setEraseColor">QWidget::setEraseColor</a>(), <a href="qwidget.html#erasePixmap">QWidget::erasePixmap</a>(), +<a href="qwidget.html#setErasePixmap">QWidget::setErasePixmap</a>(), <a href="qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</a>(), +<a href="qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</a>(), +<a href="qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</a>() and +<a href="qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</a>(). See their documentation for +details. +<p> <h2> QXml Classes +</h2> +<a name="25"></a><p> <h3> <a href="qxmlinputsource.html">QXmlInputSource</a> +</h3> +<a name="25-1"></a><p> The semantics of QXmlInputSource has changed slightly. This change +only affects code that parses the same data from the same input source +multiple times. In such cases you must call +<a href="qxmlinputsource.html#reset">QXmlInputSource::reset</a>() before the second call to +<a href="qxmlsimplereader.html#parse">QXmlSimpleReader::parse</a>(). +<p> So code like +<pre> + <a href="qxmlinputsource.html">QXmlInputSource</a> source( &xmlFile ); + <a href="qxmlsimplereader.html">QXmlSimpleReader</a> reader; + ... + reader.<a href="qxmlsimplereader.html#parse">parse</a>( source ); + ... + reader.<a href="qxmlsimplereader.html#parse">parse</a>( source ); +</pre> + +must be changed to +<pre> + <a href="qxmlinputsource.html">QXmlInputSource</a> source( &xmlFile ); + <a href="qxmlsimplereader.html">QXmlSimpleReader</a> reader; + ... + reader.<a href="qxmlsimplereader.html#parse">parse</a>( source ); + ... + source.<a href="qxmlinputsource.html#reset">reset</a>(); + reader.<a href="qxmlsimplereader.html#parse">parse</a>( source ); +</pre> + +<p> <h3> <a href="qxmllocator.html">QXmlLocator</a> +</h3> +<a name="25-2"></a><p> Due to some internal changes, it was necessary to clean-up the semantics of +QXmlLocator: this class is now an abstract class. This shouldn't cause +any problems, since programmers usually used the QXmlLocator that was +reported by <a href="qxmlcontenthandler.html#setDocumentLocator">QXmlContentHandler::setDocumentLocator</a>(). If you used this +class in some other way, you must adjust your code to use the +QXmlLocator that is reported by the +QXmlContentHandler::setDocumentLocator() function. +<p> <h2> Asynchronous I/O Classes +</h2> +<a name="26"></a><p> QASyncIO, QDataSink, QDataSource, QIODeviceSource and QDataPump were +used internally in previous versions of Qt, but are not used anymore. +They are now obsolete. +<p> <h2> Transparent widgets +</h2> +<a name="27"></a><p> In Qt 2.x, the AutoMask property was used to obtain a +transparent-looking widget. In general, this approach is slow and +processor hungry. Qt 3.0 uses the BackgroundOrigin which provides +vastly improved performance and more flexibility in most cases. The +few classes for which the AutoMask property is still the best approach +are <a href="qcheckbox.html">QCheckBox</a>, <a href="qcombobox.html">QComboBox</a>, <a href="qpushbutton.html">QPushButton</a>, <a href="qradiobutton.html">QRadioButton</a> and <a href="qtabwidget.html">QTabWidget</a>. +<p> <h2> Bezier Curves +</h2> +<a name="28"></a><p> The function names for Bezier curves in <a href="qpainter.html">QPainter</a> and <a href="qpointarray.html">QPointArray</a> have +been corrected. They now properly reflect their cubic form instead of +a quadratic one. If you have been using either +QPainter::drawQuadBezier() or QPointArray::quadBezier() you must +replace these calls with +<ul> +<li> void <a href="qpainter.html#drawCubicBezier">QPainter::drawCubicBezier</a>( const QPointArray &, int index=0 ) and +<li> QPointArray <a href="qpointarray.html#cubicBezier">QPointArray::cubicBezier</a>() const +</ul> +respectively. Neither the arguments nor the resulting curve have changed. +<p> <h2> Locale-aware String Comparisons in <a href="qiconview.html">QIconView</a>, <a href="qlistbox.html">QListBox</a>, +<a href="qlistview.html">QListView</a> and <a href="qtable.html">QTable</a> +</h2> +<a name="29"></a><p> In Qt 2.x, <a href="qstring.html">QString</a> only provided string comparisons using the Unicode +values of the characters of a string. This is efficient and reliable, +but it is not the appropriate order for most languages. For example, +French users expect 'é' (e acute) to be treated essentially as +'e' and not put after 'z'. +<p> In Qt 3.0, <a href="qstring.html#localeAwareCompare">QString::localeAwareCompare</a>() implements locale aware +string comparisions on certain platforms. The classes <a href="qiconview.html">QIconView</a>, <a href="qlistbox.html">QListBox</a>, <a href="qlistview.html">QListView</a> and <a href="qtable.html">QTable</a> now use +QString::localeAwareCompare() instead of <a href="qstring.html#compare">QString::compare</a>(). If you +want to control the behaviour yourself you can always reimplement +<a href="qiconviewitem.html#compare">QIconViewItem::compare</a>(), <a href="qlistbox.html#text">QListBox::text</a>(), <a href="qlistviewitem.html#compare">QListViewItem::compare</a>() +or <a href="qtableitem.html#key">QTableItem::key</a>() as appropriate. +<p> +<!-- eof --> +<p><address><hr><div align=center> +<table width=100% cellspacing=0 border=0><tr> +<td>Copyright © 2007 +<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a> +<td align=right><div align=right>Qt 3.3.8</div> +</table></div></address></body> +</html> |