diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-11-08 12:31:36 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-11-08 12:31:36 -0600 |
commit | d796c9dd933ab96ec83b9a634feedd5d32e1ba3f (patch) | |
tree | 6e3dcca4f77e20ec8966c666aac7c35bd4704053 /doc/porting2.doc | |
download | tqt3-d796c9dd933ab96ec83b9a634feedd5d32e1ba3f.tar.gz tqt3-d796c9dd933ab96ec83b9a634feedd5d32e1ba3f.zip |
Test conversion to TQt3 from Qt3 8c6fc1f8e35fd264dd01c582ca5e7549b32ab731
Diffstat (limited to 'doc/porting2.doc')
-rw-r--r-- | doc/porting2.doc | 1441 |
1 files changed, 1441 insertions, 0 deletions
diff --git a/doc/porting2.doc b/doc/porting2.doc new file mode 100644 index 000000000..e29ea73d8 --- /dev/null +++ b/doc/porting2.doc @@ -0,0 +1,1441 @@ +/**************************************************************************** +** +** Help with porting from Qt 1.x to Qt 2.x +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of the Qt GUI Toolkit. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free Qt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing retquirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.QPL +** included in the packaging of this file. Licensees holding valid Qt +** Commercial licenses may use this file in accordance with the Qt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +/*! +\page porting2.html + +\title Porting to Qt 2.x + +<p> +You're probably looking at this page because you want to port +your application from Qt 1.x to Qt 2.x, but to be sure, let's +review the good reasons to do this: +<ul> + <li>To get access to all the new Qt 2.x features like the rich text + HTML subset for formatted labels, tooltips, online help etc. + and the much easier to use layout classes and widgets. + <li>To make your application truly international, with support + for Unicode and translations for the languages of the world. + <li>To allow your application to fit into the new look of the + Unix desktop with configurable, very powerful "themes". The + extended style system also integrates Qt applications better + on MS-Windows desktops. Qt will automatically chose the right + colors and fonts and obey global system setting changes. + <li>To stay up-to-date with the version of Qt that gets all the + new features and bug-fixes. + <li>To get more speed and smoother widgets display with all the + new anti-flicker changes in Qt. + <li>Most of all though, you want to port to Qt 2.x + so that your Wheel Mouse works! +</ul> + +<p> +The Qt 2.x series is not binary compatible with the 1.x series. +This means programs compiled for Qt 1.x must be recompiled to work +with Qt 2.x. Qt 2.x is also not completely <em>source</em> compatible +with 1.x, however all points of incompatibility cause +compiler errors (rather than mysterious results), or produce run-time +messages. The result is that Qt 2.x includes many additional features, +discards obsolete functionality that is easily converted to use the new +features, and that porting an application from Qt 1.x to Qt 2.x is +a simple task well worth the amount of effort retquired. + + +To port code using Qt 1.x to use Qt 2.x: + +<ul> + <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 1.x. + <li> Recompile with Qt 2.x. For each error, search below for related + identifiers (eg. function names, class names) - this documented is + structured to mention all relevant identifiers to facilitate such + searching, even if that makes it a little verbose. + <li> If you get stuck, ask on the qt-interest mailing list, or + Trolltech Technical Support if you're a Professional Edition + licensee. +</ul> + + +Many very major projects, such as <a href="http://www.kde.org/">KDE</a> +have been port, so there is plenty of expertise in the collective conscious +that is the Qt Developer Community! +</p> + + +<hr> + +<h2 align=center>The Porting Notes</h2> + +<ul> + <li><b><a href="#Namespace">Namespace</a></b> + <li><b><a href="#Virtual">Virtual Functions</a></b> + <li><b><a href="#Collection">Collection classes</a></b> + <li><b><a href="#DefaultParent">No Default 0 Parent Widget</a></b> + <li><b><a href="#DebugVsRelease">Debug vs. Release</a></b> + + <li><b><a href="#QApplication">QApplication</a></b> + <li><b><a href="#QClipboard">QClipboard</a></b> + <li><b><a href="#QColor">QColor</a></b> + <li><b><a href="#QDataStream">QDataStream</a></b> + <li><b><a href="#QDialog">QDialog</a></b> + <li><b><a href="#QDropSite">QDropSite</a></b> + <li><b><a href="#QEvent">QEvent</a></b> + <li><b><a href="#QFile">QFile</a></b> + <li><b><a href="#QFontMetrics">QFontMetrics</a></b> + <li><b><a href="#QIODevice">QIODevice</a></b> + <li><b><a href="#QLabel">QLabel</a></b> + <li><b><a href="#QLayout">QLayout</a></b> + <li><b><a href="#QListView">QListView</a></b> + <li><b><a href="#QMenuData">QMenuData</a></b> + <li><b><a href="#QMenuData">QPopupMenu</a></b> + <li><b><a href="#QMultiLineEdit">QMultiLineEdit</a></b> + <li><b><a href="#QPainter">QPainter</a></b> + <li><b><a href="#QPicture">QPicture</a></b> + <li><b><a href="#QPoint">QPoint, QPointArray, QSize and QRect</a></b> + <li><b><a href="#QPixmap">QPixmap</a></b> + <li><b><a href="#QRgb">QRgb</a></b> + <li><b><a href="#QScrollView">QScrollView</a></b> + <li><b><a href="#QStrList">QStrList</a></b> + <li><b><a href="#QString">QString</a></b> + <li><b><a href="#QTextStream">QTextStream</a></b> + <li><b><a href="#QUriDrag">QUriDrag / QUrlDrag</a></b> + <li><b><a href="#QValidator">QComboBox</a></b> + <li><b><a href="#QValidator">QLineEdit</a></b> + <li><b><a href="#QValidator">QSpinBox</a></b> + <li><b><a href="#QValidator">QValidator</a></b> + <li><b><a href="#QWidget">QWidget</a></b> + <li><b><a href="#QWindow">QWindow</a></b> +</ul> + +<hr> + +<h3><a name="Namespace">Namespace</a></h3> + +<p> Qt 2.x is namespace-clean, unlike 1.x. Qt now uses very few +global identifiers. Identifiers like <code>red, blue, LeftButton, +AlignRight, Key_Up, Key_Down, NoBrush</code> etc. are now part of a +special class <code>Qt</code> (defined in qnamespace.h), +which is inherited by +most Qt classes. Member functions of classes that inherit from QWidget, +etc. are totally unaffected, but code that is +<em>not</em> in functions of classes inherited from <code>Qt</code>, +you must qualify these identifiers like this: <code>Qt::red, +Qt::LeftButton, Qt::AlignRight</code>, etc. + +<p>The <code>qt/bin/qt20fix</code> script helps to fix the code that +needs adaption, though most code does not need changing. + +Compiling with -DQT1COMPATIBILITY will help you get going with Qt 2.x +- it allows all the old "dirty namespace" identifiers from Qt 1.x to +continue working. Without it, you'll get compile errors that can +easily be fixed by searching this page for the clean identifiers. + +<h3><a name="DefaultParent">No Default 0 Parent Widget</a></h3> + +In Qt 1.x, all widget constructors were defined with a default value +of 0 for the parent widget. However, only the main window of the +application should be created with a 0 parent, all other widgets +should have parents. Having the 0 default made it too simple to create +bugs by forgetting to specify the parent of non-mainwindow +widgets. Such widgets would typically never be deleted (causing memory +leaks), and they would become top-level widgets, confusing the window +managers. Therefore, in Qt 2.x the 0 default parent has been removed +for the widget classes that are not likely to be used as main windows. + +Note also that programs no longer need (or should) use 0 parent just +to indicate that a widget should be top-level. See +\code QWidget::isTopLevel() \endcode for details. See also the notes about +<a href="#QMenuData">QPopupMenu</a> and <a href="#QDialog">QDialog</a> +below. + +<h3><a name="Virtual">Virtual Functions</a></h3> + +<p> Some virtual functions have changed signature in Qt 2.x. +If you override them in derived classes, you must change the signature +of your functions accordingly. + +<!-- warwick can check for additions to this with his qt-2-report --> +<ul> + <li>\code QWidget::setStyle(GUIStyle)\endcode + <li>\code QListView::addColumn(const char *, int)\endcode + <li>\code QListView::setColumnText(int, const char *)\endcode + <li>\code QListViewItem::setText(int, const char *)\endcode + <li>\code QMultiLineEdit::insertLine(const char *, int)\endcode + <li>\code QMultiLineEdit::insertAt(const char *, int, int, bool)\endcode + <li>\code QSpinBox::setPrefix(const char *)\endcode + <li>\code QSpinBox::setSuffix(const char *)\endcode + <li>\code QToolButton::setTextLabel(const char *, bool)\endcode + <li>\code QDoubleValidator::validate(QString &, int &)\endcode + <li>\code QIntValidator::validate(QString &, int &)\endcode + <li>\code QValidator::fixup(QString &)\endcode + <li>\code QSlider::paintSlider(QPainter *, const QRect &)\endcode +</ul> + +This is one class of changes that are +not detected by the compiler, +so you should mechanically search for each of +these function names in your header files, eg. + +\code +egrep -w 'setStyle|addColumn|setColumnText|setText...' *.h +\endcode + +Of course, you'll get a few false positives (eg. if you have a setText +function that is not in a subclass of QListViewItem). + + +<h3><a name="Collection">Collection classes</a></h3> + +<p> The collection classes include generic +classes such as QGDict, QGList, and +the subclasses such as QDict and QList. + +<p> The macro-based Qt collection classes are obsolete; use the +template-based classes instead. Simply remove includes of qgeneric.h and +replace e.g. Q_DECLARE(QCache,QPixmap) with QCache<QPixmap>. + +<p> The GCI global typedef is replaced by QCollection::Item. Only if you +make your own subclasses of the undocumented generic collection classes +will you have GCI in your code. +This change has been made to avoid collisions with other namespaces. + +<p> The GCF global typedef is removed (it was not used in Qt). + + + +<h3><a name="DebugVsRelease">Debug vs. Release</a></h3> + +<p>The Q_ASSERT macro is now a null expression if the QT_CHECK_STATE flag +is not set (i.e. if the QT_NO_CHECK flag is defined). + +<p>The debug() function now outputs nothing if Qt was compiled with +the QT_NO_DEBUG macro defined. + + +<h3><a name="QString">QString</a></h3> + +QString has undergone major changes internally, and although it is highly +backward compatible, it is worth studying in detail when porting to Qt 2.x. +The Qt 1.x QString class has been renamed to QCString in Qt 2.x, though if +you use that you will incur a performance penalty since all Qt functions +that took const char* now take const QString&. + +<p> +To take full advantage of the new Internationalization +functionality in Qt 2.x, the following steps are retquired: + + <ul> + <li> Start converting all uses of "const char*" in parameters to + "const QString&" - this can often be done mechanically, eg. + using Perl. Convert usage of char[] for temporary string + building to QString (much software already uses QString for + this purpose as it offers many more facilities). + + If you find that you are mixing usage of QCString, QString, + and QByteArray, this causes lots of unnecessary copying and + might indicate that the true nature of the data you are + dealing with is uncertain. If the data is NUL-terminated + 8-bit data, use QCString; if it is unterminated (ie. + contains NULs) 8-bit data, use QByteArray; if it is text, + use QString. + </p> + + <li> Put a breakpoint in \code QString::latin1()\endcode + to catch places where + Unicode information is being converted to ASCII (loosing + information if your user in not using Latin1). Qt has + a small number of calls to this - ignore those. As a stricter + alternative, compile your code with QT_NO_ASCII_CAST defined, + which hides the automatic conversion of QString to const char*, + so you can catch problems at compile time. + </p> + + <li> See the Qt \link i18n.html Internationalization page\endlink + for information about the full process of internationalizing + your software. + </ul> + +<p> +Points to note about the new QString are: + +<dl compact> +<dt><b>Unicode</b></dt> +<dd> + Qt now uses Unicode throughout. + data() now returns a <em>const</em> reference to an ASCII version + of the string - you cannot directly access the + string as an array of bytes, because it isn't one. Often, latin1() is + what you want rather than data(), or just leave it to convert to + const char* automatically. data() is only used now to aide porting to Qt 2.x, + and ideally you'll only need latin1() or implicit conversion when interfacing + to facilities that do not have Unicode support. + +<dt><b>Automatic-expanding</b></dt> +<dd> +A big advantage of the new QString is that it automatically expands +when you write to an indexed position. + +<dt><b>QChar and QCharRef</b></dt> +<dd> +QChar are the Unicode characters that make up a QString. A QCharRef is +a temporary reference to a QChar in a QString that when assigned to +ensures that the implicit sharing semantics of the QString are maintained. +You are unlikely to use QCharRef in your own code - but so that you +understand compiler error messages, just know that <tt>mystring[123]</tt> +is a QCharRef whenever <tt>mystring</tt> is not a constant string. A QCharRef +has basically the same functionality as a QChar, except it is more restricted +in what you can assign to it and cast it to (to avoid programming errors). + +<dt><b>Use QString</b></dt> +<dd> +Try to always use QString. If you <em>must</em>, use QCString which is the +old implementation from Qt 1.x. + +<dt><b>Unicode vs. ASCII</b></dt> +<dd> +Every conversion to and from ASCII is wasted time, so try to use QString + as much as possible rather than const char*. This also ensures you have + full 16-bit support. + +<dt><b>Convertion to ASCII</b></dt> +<dd> +The return value from operator const char*() is transient - don't expect + it to remain valid while you make deep function calls. + It is valid for as long as you don't modify or destroy the QString. + +<dt><b>QString is simpler</b></dt> +<dd> +Expect your code to become simpler with the new QString, especially + places where you have used a char* to wander over the string rather + than using indexes into the string. + +<dt><b>Some hacks don't work</b></dt> +<dd> +This hack: + use_sub_string( &my_string[index] ) + should be replaced by: + use_sub_string( my_string.mid(index) ) + +<dt><b>QString(const char*, int) is removed</b></dt> +<dd> +The QString constructor taking a const char* and an integer is removed. +Use of this constructor was error-prone, since the length included the +'\0' terminator. Use QString::left(int) or QString::fromLatin1( const char*, +int ) -- in both cases the int parameter signifies the number of characters. + +<dt><b>QString(int) is private</b></dt> +<dd> +The QString constructor taking an integer is now private. This function +is not meaningful anymore, since QString does all space allocation +automatically. 99% of cases can simple be changed to use the +default constructor, QString(). +<p> +In Qt 1.x the constructor was used in two ways: accidentally, +by attempting to convert a char to a QString (the char converts to int!) - +giving strange bugs, and as a way to make a QString big enough prior to +calling \code QString::sprintf()\endcode. In Qt 2.x, the accidental bug case is +prevented (you will get a compilation error) and QString::sprintf has +been made safe - you no longer need to pre-allocate space (though for +other reasons, sprintf is still a poor choice - eg. it doesn't pass Unicode). +The only remaining common case is conversion of 0 (NULL) to QString, which +would usually give expected results in Qt 1.x. For Qt 2.x the correct +syntax is to use QString::null, though note that +the default constructor, QString(), creates a null string too. +Assignment of 0 to a QString is ambiguous - assign +QString::null; you'll mainly find these in code that has been converted +from const char* types to QString. +This also prevents a common error case from Qt 1.x - in +that version, mystr = 'X' would <em>not</em> produce the expected +results and was always a programming error; in Qt 2.x, it works - making +a single-character string. + +<p> +Also see <a href="#QStrList">QStrList</a>. + +<dt><b>Signals and Slots</b></dt> +<dd> +Many signal/slots have changed from const char* to QString. You will + get run-time errors when you try to \code QObject::connect()\endcode + to the old + signals and slots, usually with a message indicating the const QString& + replacement signal/slot. + +<dt><b>Optimize with Q2HELPER</b></dt> +<dd> +In qt/src/tools/qstring.cpp there is a Q2HELPER - define it for some +extra debugging/optimizing features (don't leave it it - it kills performance). +You'll get an extra function, qt_qstring_stats(), which will print a +summary of how much your application is doing Unicode and ASCII +back-and-forth conversions. + +<dt><b>QString::detach() is obsolete and removed</b></dt> +<dd> +Since QString is now always shared, this function does nothing. +Remove calls to QString::detach(). + +<dt><b>QString::resize(int size) is obsolete and removed</b></dt> +<dd> +Code using this to truncate a string should use + \link QString::truncate() truncate(size-1)\endlink. +Code using qstr.resize(0) should use qstr = QString::null. +Code calling resize(n) prior to using + \link QString::operator[]() operator[]\endlink up to n just remove +the resize(n) completely. + +<dt><b>QString::size() is obsolete and removed</b></dt> +<dd> +Calls to this function must be replaced by +\link QString::length() length()\endlink+1. + +<dt><b>QString::setStr(const char*) is removed</b></dt> +<dd>Try to understand why you were using this. +If you just meant assignment, use that. Otherwise, +you are probably using QString as an array of bytes, in which case use +QByteArray or QCString instead. + +<dt><b>QString is not an array of bytes</b></dt> +<dd> +Code that uses QString as an array of bytes should use QByteArray +or a char[], <em>then</em> convert that to a QString if needed. + +<dt><b>"string = 0"</b></dt> +<dd> +Assigning 0 to a QString should be assigning the null string, +ie. string = QString::null. + +<dt><b>System functions</b></dt> +<dd> +You may find yourself needing latin1() for passing to the operating system + or other libraries, and be tempted to use QCString to save the conversion, + but you are better off using Unicode throughout, then when the operating + system supports Unicode, you'll be prepared. Some Unix operating systems + are now beginning to have basic Unicode support, and Qt will be tracking + these improvements as they become more widespread. + +<dt><b>Bugs removed</b></dt> +<dd> +toShort() returns 0 (and sets *ok to false) on error. +toUInt() now works for big valid unsigned integers. +insert() now works into the same string. + +<dt><b>NULL pointers</b></dt> +<dd> +When converting "const char*" usage to QString in order to make your + application fully Unicode-aware, use QString::null for the null value + where you would have used 0 with char pointers. + +<dt><b>QString is not null terminated</b></dt> +<dd> +This means that inserting a 0-character + in the middle of the string does <em>not</em> change the length(). ie. + \code + QString s = "fred"; + s[1] = '\0'; + // s.length() == 4 + // s == "f\0ed" + // s.latin1() == "f" + s[1] = 'r'; + // s == "fred" + // s.latin1() == "fred" + \endcode + Especially look out for this type of code: + \code + QString s(2); + s[0] = '?'; + s[1] = 0; + \endcode + This creates a string 2 characters long. + To find these problems while converting, you might like to + add Q_ASSERT(strlen(d->ascii)==d->len) inside + \code QString::latin1()\endcode. + +<dt><b>QString or Standard C++ string?</b></dt> +<dd> +<p> +The Standard C++ Library string is not Unicode. Nor is wstring defined +to be so (for the small number of platforms where it is defined at all). +This is the same mistake made over and over +in the history of C - only when non-8-bit characters are <em>the norm</em> +do programmers find them usable. Though it is possible to convert between +string and QString, it is less efficient than using QString throughout. +For example, when using: +\code + QLabel::setText( const QString& ) +\endcode +if you use string, like this: +\code + void myclass::dostuffwithtext( const string& str ) + { + mylabel.setText( QString(str.c_str()) ); + } +\endcode +that will create a (ASCII only) copy of str, stored in mylabel. +But this: +\code + void myclass::dostuffwithtext( const QString& str ) + { + mylabel.setText( str ); + } +\endcode +will make an implicitly shared reference to str in the QLabel - no copying +at all. This function might be 10 nested function calls away from something +like this: +\code + void toplevelclass::initializationstuff() + { + doStuff( tr("Okay") ); + } +\endcode +At this point, in Qt 2.x, the tr() does a very fast dictionary lookup +through memory-mapped message files, returning some Unicode QString for +the appropriate language (the default being to just make a QString out +of the text, of course - you're not <em>forced</em> to use any of these +features), and that <em>same</em> memory mapped Unicode will be passed +though the system. All occurrences of the translation of "Okay" can +potentially be shared. + +</dl> + + + +<h3><a name="QApplication">QApplication</a></h3> + +In the function \code QApplication::setColorSpec()\endcode, +PrivateColor and TrueColor are obsolete. Use ManyColor instead. + + +<h3><a name="QColor">QColor</a></h3> + +<p> +All colors +(color0, +color1, +black, +white, +darkGray, +gray, +lightGray, +red, +green, +blue, +cyan, +magenta, +yellow, +darkRed, +darkGreen, +darkBlue, +darkCyan, +darkMagenta, +and +darkYellow) +are in the Qt namespace. +In members of classes that inherit the Qt namespace-class (eg. QWidget +subclasses), you can use the unqualified names as before, but in global +functions (eg. main()), you need to qualify them: Qt::red, Qt::white, etc. +See also the <a href="#QRgb">QRgb</a> section below. + +<h3><a name="QRgb">QRgb</a></h3> + +In QRgb (a typedef of long), the order of the RGB channels has changed to +be in the more efficient order (for typical contemporary hardware). If your +code made assumptions about the order, you will get blue where you expect +red and vice versa (you'll not notice the problem if you use shades of +gray, green, or magenta). You should port your code to use the +creator function qRgb(int r,int g,int b) and the +access functions qRed(QRgb), qBlue(QRgb), and qGreen(QRgb). +If you are using the alpha channel, it hasn't moved, but you should use +the functions qRgba(int,int,int,int) and qAlpha(QRgb). Note also that +QColor::pixel() does <i>not</i> return a QRgb (it never did on all platforms, +but your code may have assumed so on your platform) - this may also produce +strange color results - use QColor::rgb() if you want a QRgb. + + +<h3><a name="QDataStream">QDataStream</a></h3> + +<p>The QDatastream serialization format of most Qt classes is changed +in Qt 2.x. Use \code QDataStream::setVersion( 1 )\endcode to get a +datastream object that can read and write Qt 1.x format data streams. + +<p>If you want to write Qt 1.x format datastreams, note the following +compatibility issues: + <ul> + <li>QString: Qt 1.x has no Unicode support, so strings will be + serialized by writing the classic C string returned by \code + QString::latin1().\endcode + <li><a href="#QPoint">QPoint & al.</a>: Coordinates will be + truncated to the Qt 1.x 16 bit format. + </ul> + +<h3><a name="QWidget">QWidget</a></h3> + +<h4>QWidget::recreate()</h4> +<p> +This function is now called \link QWidget::reparent() reparent()\endlink. + +<h4>QWidget::setAcceptFocus(bool)</h4> +<p> +This function is removed. +Calls like QWidget::setAcceptFocus(TRUE) should be replaced by + \code QWidget::setFocusPolicy(StrongFocus)\endcode, and +calls like QWidget::setAcceptFocus(FALSE) should be replaced by + \code QWidget::setFocusPolicy(NoFocus)\endcode. +Additional policies are TabFocus and ClickFocus. + + +<h4>QWidget::paintEvent()</h4> +<p> +paintEvent(0) is not permitted - subclasses need not check for +a null event, and might crash. +Never pass 0 as the argument to paintEvent(). You probably +just want repaint() or update() instead. +<p> +When processing a paintEvent, painting is only permitted within +the update region specified in the event. Any painting outside will be +clipped away. This shouldn't break any code (it was always like this +on MS-Windows) but makes many explicit calls to +QPainter::setClipRegion() superfluous. Apart from the improved +consistency, the change is likely to reduce flicker and to make Qt +event slightly faster. + +<h3><a name="QIODevice">QIODevice</a></h3> +<p> +The protected member QIODevice::index is renamed to QIODevice::ioIndex +to avoid warnings and to allow compilation with bad C libraries that +#define index to strchr. If you have made a subclass of QIODevice, +check every occurrence of the string "index" in the implementation, since +a compiler will not always catch cases like \code(uint)index\endcode +that need to be changed. + +<h3><a name="QLabel">QLabel</a></h3> + +<h4>\code QLabel::setMargin()\endcode</h4> +<p> +\code QLabel::setMargin()\endcode and\code QLabel::margin()\endcode +have been renamed to \code QLabel::setIndent()\endcode and +\code QLabel::indent()\endcode, respectively. This was done to avoid +collision with QFrame::setMargin(), which is now virtual. + +<h4>\code QLabel::setMovie()\endcode</h4> +<p> +Previously, setting a movie on a label cleared the value of text(). +Now it doesn't. If you somehow used <tt>QLabel::text()</tt> +to detect if a +movie was set, you might have trouble. This is unlikely. + + +<h3><a name="QDialog">QDialog</a></h3> + +<p> The semantics of the parent pointer changed for modeless dialogs: +In Qt-2.x, dialogs are always top level windows. The parent, however, +takes the ownership of the dialog, i.e. it will delete the dialog at +destruction if it has not been explicitly deleted +already. Furthermore, the window system will be able to tell that both +the dialog and the parent belong together. Some X11 window managers +will for instance provide a common taskbar entry in that case. + +<p> +If the dialog belongs to a top level main window +of your application, pass this main window as parent to the dialog's +constructor. Old code (with 0 pointer) will still run. Old code that +included QDialogs as child widgets will no longer work (it never really did). +If you think you might be doing this, put a breakpoint in +QDialog::QDialog() conditional on parent not being 0. + + +<h3><a name="QStrList">QStrList</a></h3> + +Many methods that took a QStrList can now instead take a QStringList, +which is a real list of QString values. + +To use QStringList rather than QStrList, change loops that look like this: +\code + QStrList list = ...; + const char* s; + for ( s = list.first(); s; s = list.next() ) { + process(s); + } +\endcode +to be like this: +\code + QStringList list = ...; + QStringList::ConstIterator i; + for ( i = list.begin(); i != list.end(); ++i ) { + process(*i); + } +\endcode + +In general, the QStrList functions are less efficient, building a temporary QStringList. + +The following functions now use QStringList rather than QStrList +for return types/parameters. + +<ul> + <li><tt>void QFileDialog::setFilters(const QStrList&)</tt> + becomes <tt>void QFileDialog::setFilters(const QStringList&)</tt> + <li><tt>QStrList QFileDialog::getOpenFileNames(...)</tt> + becomes <tt>QStringList QFileDialog::getOpenFileNames(...)</tt> + <li><tt>bool QUrlDrag::decodeLocalFiles(QMimeSource*, QStrList&)</tt> + becomes <tt>bool QUriDrag::decodeLocalFiles(QMimeSource*, QStringList&)</tt> + <li><tt>const QStrList *QDir::entryList(...) const</tt> + becomes <tt>QStringList QDir::entryList(...) const</tt> + (note that the return type is no longer a pointer). You may also + choose to use encodedEntryList(). +</ul> + +The following functions are added: +<ul> + <li><tt>QComboBox::insertStringList(const QStringList &, int index=-1)</tt> + <li><tt>QListBox::insertStringList(const QStringList &,int index=-1)</tt> +</ul> + +The rarely used static function <tt>void +QFont::listSubstitutions(QStrList*)</tt> is replaced by <tt>QStringList +QFont::substitutions()</tt>. + + +<h3><a name="QLayout">QLayout</a></h3> + +<p> Calling resize(0,0) or resize(1,1) will no longer work magically. +Remove all such calls. The default size of top level widgets will be their +\link QWidget::sizeHint() sizeHint()\endlink. + +<p> The default implementation of QWidget::sizeHint() will no longer +return just an invalid size; if the widget has a layout, it will return +the layout's preferred size. + +<p> The special maximum MaximumHeight/Width is now QWIDGETSIZE_MAX, +not QCOORD_MAX. + +<p> \link QBoxLayout::addWidget() QBoxLayout::addWidget()\endlink +now interprets the \e alignment parameter more aggressively. A +non-default alignment now indicates that the widget should not grow to +fill the available space, but should be sized according to sizeHint(). +If a widget is too small, set the alignment to 0. (Zero indicates no +alignment, and is the default.) + +<p> The class QGManager is removed. Subclasses of QLayout need to be rewritten +to use the new, much simpler \link QLayout QLayout API\endlink. + +<p> For typical layouts, all use of +\link QWidget::setMinimumSize() setMinimumSize()\endlink +and +\link QWidget::setFixedSize() setFixedSize()\endlink +can be removed. +\link QLayout::activate() activate()\endlink is no longer necessary. + +<p> +You might like to look at the QGrid, QVBox, and QHBox widgets - they offer +a simple way to build nested widget structures. + + +<h3><a name="QListView">QListView</a></h3> + +<p>In Qt 1.x mouse events to the viewport where redirected to the +event handlers for the listview; in Qt 2.x, this functionality is +in QScrollView where mouse (and other position-oriented) events are +redirected to viewportMousePressEvent() etc, which in turn translate +the event to the coordinate system of the contents and call +contentsMousePressEvent() etc, thus providing events in the most +convenient coordinate system. If you overrode QListView::MouseButtonPress(), +QListView::mouseDoubleClickEvent(), QListView::mouseMoveEvent(), or +QListView::mouseReleaseEvent() you must instead override +viewportMousePressEvent(), +viewportMouseDoubleClickEvent(), viewportMouseMoveEvent(), or +viewportMouseReleaseEvent() respectively. New code will usually override +contentsMousePressEvent() etc. + +<p>The signal QListView::selectionChanged(QListViewItem *) can now be +emitted with a null pointer as parameter. Programs that use the +argument without checking for 0, may crash. + +<h3><a name="QMultiLineEdit">QMultiLineEdit</a></h3> + +<p> +The protected function +\code QMultiLineEdit::textWidth(QString*)\endcode +changed to +\code QMultiLineEdit::textWidth(const QString&)\endcode. +This is unlikely to be a problem, and you'll get a compile error +if you called it. + + +<h3><a name="QClipboard">QClipboard</a></h3> + +<p> +\code QClipboard::pixmap()\endcode now returns a QPixmap, not a QPixmap*. +The pixmap +will be \link QPixmap::isNull() null\endlink if no pixmap is on the +clipboard. QClipboard now offers powerful MIME-based types on the +clipboard, just like drag-and-drop (in fact, you can reuse most of your +drag-and-drop code with clipboard operations). + + +<h3><a name="QDropSite">QDropSite</a></h3> + +<P> +QDropSite is obsolete. If you simply passed <tt>this</tt>, just remove +the inheritance of QDropSite and call +\link QWidget::setAcceptDrops() setAcceptDrops(TRUE)\endlink in the class +constructor. +If you passed something other than <tt>this</tt>, +your code will not work. A common case is passing +the +\link QScrollView::viewport() viewport()\endlink of a QListView, +in which case, +override the +\link QScrollView::contentsDragMoveEvent() contentsDragMoveEvent()\endlink, +etc. +functions rather than QListView's dragMoveEvent() etc. For other +cases, you will need to use an event filter to act on the drag/drop events +of another widget (as is the usual way to intercept foreign events). + + +<h3><a name="QScrollView">QScrollView</a></h3> + +The parameters in the signal +\link QScrollView::contentsMoving() contentsMoving(int,int)\endlink +are now positive rather than negative values, coinciding with +\link QScrollView::setContentsPos() setContentsPos()\endlink. Search for +connections you make to this signal, and either change the slot they are +connected to such that it also expects positive rather than negative +values, or introduce an intermediate slot and signal that negates them. + +If you used drag and drop with QScrollView, you may experience the problem +described for <a href="#QDropSite">QDropSite</a>. + + +<h3><a name="QTextStream">QTextStream</a></h3> + +<p> +\code operator<<(QTextStream&, QChar&)\endcode does not skip whitespace. +\code operator<<(QTextStream&, char&)\endcode does, + as was the case with Qt 1.x. This is for backward compatibility. + +<h3><a name="QUriDrag">QUriDrag</a></h3> + +The class QUrlDrag is renamed to QUriDrag, and the API has been +broadened to include additional conversion routines, including +conversions to Unicode filenames (see the class documentation +for details). Note that in Qt 1.x +the QUrlDrag class used the non-standard MIME type "url/url", +while QUriDrag uses the standardized "text/uri-list" type. Other +identifiers affected by the Url to Uri change are +QUrlDrag::setUrls() and QUrlDrag::urlToLocalFile(). + +<h3><a name="QPainter">QPainter</a></h3> + +<p> The GrayText painter flag has been removed. Use +\link QPainter::setPen() setPen( palette().disabled().foreground() )\endlink +instead. + + +<p> The RasterOp enum +(CopyROP, + OrROP, + XorROP, + NotAndROP, + EraseROP, + NotCopyROP, + NotOrROP, + NotXorROP, + AndROP, NotEraseROP, + NotROP, + ClearROP, + SetROP, + NopROP, + AndNotROP, + OrNotROP, + NandROP, + NorROP, LastROP) +is now part of the Qt namespace class, so if you +use it outside a member function, you'll need to prefix with Qt::. + + +<h3><a name="QPicture">QPicture</a></h3> + +<p>The binary storage format of QPicture is changed, but the Qt 2.x +QPicture class can both read and write Qt 1.x format QPictures. No +special handling is retquired for reading; QPicture will automatically +detect the version number. In order to write a Qt 1.x format QPicture, +set the formatVersion parameter to 1 in the QPicture constructor. + +<p>For writing Qt 1.x format QPictures, the compatibility issues of <a +href="#QDataStream">QDataStream</a> applies. + +<p>It is safe to try to read a QPicture file generated with Qt 2.x +(without formatVersion set to 1) with a program compiled with Qt +1.x. The program will not crash, it will just issue the warning +"QPicture::play: Incompatible version 2.x" and refuse to load the +picture. + + + +<h3><a name="QPoint">QPoint, QPointArray, QSize and QRect</a></h3> + +<p>The basic coordinate datatype in these classes, QCOORD, is now 32 +bit (int) instead of a 16 bit (short). The const values QCOORD_MIN and +QCOORD_MAX have changed accordingly. + +<p>QPointArray is now actually, not only seemingly, a QArray of QPoint +objects. The semi-internal workaround classes QPointData and QPointVal +are removed since they are no longer needed; QPoint is used directly +instead. The function \code QPointArray::shortPoints()\endcode +provides the point array converted to short (16bit) coordinates for +use with external functions that demand that format. + + +<h3><a name="QImage">QImage</a></h3> + +QImage uses QRgb for the colors - see <a href="#QRgb">the changes to that</a>. + + +<h3><a name="QPixmap">QPixmap</a></h3> + +\code QPixmap::convertToImage()\endcode with bitmaps now guarantees that color0 pixels +become color(0) in the resulting QImage. If you worked around the lack of +this, you may be able to simplify your code. If you made assumptions +about the previous undefined behavior, the symptom will be inverted +bitmaps (eg. "inside-out" masks). + +<p> +\code QPixmap::optimize(TRUE)\endcode +is replaced by +\code QPixmap::setOptimization(QPixmap::NormalOptim)\endcode +or +\code QPixmap::setOptimization(QPixmap::BestOptim)\endcode +- see the documentation +to choose which is best for your application. NormalOptim is most like +the Qt 1.x "TRUE" optimization. + + +<h3><a name="QMenuData">QMenuData / QPopupMenu</a></h3> + +In Qt 1.x, new menu items were assigned either an application-wide +unique identifier or an identifier equal to the index of the item, depending on the +\link QMenuData::insertItem() insertItem(...)\endlink function used. +In Qt 2.x this confusing +situation has been cleaned up: generated identifiers are always +unique across the entire application. + +If your code depends on generated ids +being equal to the item's index, a tquick fix is to use +\code QMenuData::indexOf(int id)\endcode +in the handling function instead. You may alternatively pass +\code QMenuData::count()\endcode +as identifier when you insert the items. + +Furthermore, QPopupMenus can (and should!) be created with a parent +widget now, for example the main window that is used to display the +popup. This way, the popup will automatically be destroyed together +with its main window. Otherwise you'll have to take care of the +ownership manually. + +QPopupMenus are also reusable in 2.x. They may occur in different +locations within one menu structure or be used as both a menubar +drop-down and as a context popup-menu. This should make it possible to +significantly simplify many applications. + +Last but not least, QPopupMenu no longer inherits QTableView. Instead, +it directly inherits QFrame. + +<h3><a name="QValidator">QValidator (QLineEdit, QComboBox, QSpinBox) </a></h3> + +\code QValidator::validate(...)\endcode +and +\code QValidator::fixup( QString & )\endcode +are now const +functions. If your subclass reimplements validate() as a +non-const function, +you will get a compile error (validate was pure virtual). + +In QLineEdit, QComboBox, and QSpinBox, +setValidator(...) now takes a const pointer to a QValidator, and +validator() returns a const pointer. This change highlights the fact +that the widgets do not take the ownership of the validator (a validator is +a QObject on its own, with its own parent - you can easily set the same validator +object on many different widgets), so changing the state of +such an object or deleting it is very likely a bug. + + +<h3><a name="QFile">QFile, QFileInfo, QDir</a></h3> + +File and directory names are now always Unicode strings (ie. QString). If you used QString +in the past for the simplicity it offers, you'll probably have little consequence. However, +if you pass filenames to system functions rather than using Qt functions (eg. if you use the +Unix <tt>unlink()</tt> function rather than <tt>QFile::remove()</tt>, your code will probably +only work for Latin1 locales (eg. Western Europe, the U.S.). To ensure your code will support +filenames in other locales, either use the Qt functions, or convert the filenames via +\code QFile::encodeFilename()\endcode and \code QFile::decodeFilename()\endcode - but do it +\e just as you call the system function - code that mixes encoded and unencoded filenames +is very error prone. See the comments in QString, such as regarding QT_NO_ASCII_CAST that +can help find potential problems. + + +<h3><a name="QFontMetrics">QFontMetrics</a></h3> + +boundingRect(char) is replaced by +boundingRect(QChar), but since +char auto-converts to QChar, you're not likely to run into problems +with this. + + +<h3><a name="QWindow">QWindow</a></h3> + +This class (which was just QWidget under a different name) has been +removed. If you used it, do a global search-and-replace of the word +"QWindow" with "QWidget". + + +<h3><a name="QEvent">QEvent</a></h3> + +<p> The global #define macros in qevent.h have been replaced by an +enum in QEvent. Use e.g. QEvent::Paint instead of Event_Paint. Same +for all of: +Event_None, +Event_Timer, +Event_MouseButtonPress, +Event_MouseButtonRelease, +Event_MouseButtonDblClick, +Event_MouseMove, +Event_KeyPress, +Event_KeyRelease, +Event_FocusIn, +Event_FocusOut, +Event_Enter, +Event_Leave, +Event_Paint, +Event_Move, +Event_Resize, +Event_Create, +Event_Destroy, +Event_Show, +Event_Hide, +Event_Close, +Event_Quit, +Event_Accel, +Event_Clipboard, +Event_SockAct, +Event_DragEnter, +Event_DragMove, +Event_DragLeave, +Event_Drop, +Event_DragResponse, +Event_ChildInserted, +Event_ChildRemoved, +Event_LayoutHint, +Event_ActivateControl, +Event_DeactivateControl, +and +Event_User. + +<p> The Q_*_EVENT macros in qevent.h have been deleted. Use an +explicit cast instead. The macros were: +Q_TIMER_EVENT, +Q_MOUSE_EVENT, +Q_KEY_EVENT, +Q_FOCUS_EVENT, +Q_PAINT_EVENT, +Q_MOVE_EVENT, +Q_RESIZE_EVENT, +Q_CLOSE_EVENT, +Q_SHOW_EVENT, +Q_HIDE_EVENT, +and +Q_CUSTOM_EVENT. + +<p> QChildEvents are now sent for all QObjects, not just QWidgets. +You may need to add extra checking if you use a QChildEvent without +much testing of its values. + +<h3>All the removed functions</h3> + +All <a href="removed20.html">these functions</a> have been removed in +Qt 2.x. Most are simply cases where "const char*" has changed to +"const QString&", or when an enumeration type has moved into the Qt:: +namespace (which, technically, is a new name, but your code will +compile just the same anyway). This list is provided for completeness. + +*/ + +// I split this to work around limitations in perl's regexp parser. --Arnt + +// warwick can regenerate this with his qt-2-report + +/*! \page removed20.html + +\title Functions removed in Qt 2.0 + +<pre> + +QFileDialog::fileHighlighted(const char *) +QFileDialog::fileSelected(const char *) +QFileDialog::dirEntered(const char *) +QFileDialog::updatePathBox(const char *) +QObject::name(void) const +QFileDialog::getOpenFileName(const char *, const char *, QWidget *, const char *) +QFileDialog::getSaveFileName(const char *, const char *, QWidget *, const char *) +QFileDialog::getExistingDirectory(const char *, QWidget *, const char *) +QFileDialog::getOpenFileNames(const char *, const char *, QWidget *, const char *) +QFileDialog::setSelection(const char *) +QFileDialog::setDir(const char *) +QMessageBox::setText(const char *) +QMessageBox::setButtonText(const char *) +QMessageBox::setButtonText(int, const char *) +QMessageBox::setStyle(GUIStyle) +QMessageBox::standardIcon(QMessageBox::Icon, GUIStyle) +QMessageBox::information(QWidget *, const char *, const char *, const char *, const char *, const char *, int, int) +QMessageBox::information(QWidget *, const char *, const char *, int, int, int) +QMessageBox::warning(QWidget *, const char *, const char *, const char *, const char *, const char *, int, int) +QMessageBox::warning(QWidget *, const char *, const char *, int, int, int) +QMessageBox::critical(QWidget *, const char *, const char *, const char *, const char *, const char *, int, int) +QMessageBox::critical(QWidget *, const char *, const char *, int, int, int) +QMessageBox::about(QWidget *, const char *, const char *) +QMessageBox::aboutQt(QWidget *, const char *) +QMessageBox::message(const char *, const char *, const char *, QWidget *, const char *) +QMessageBox::buttonText(void) const +QMessageBox::query(const char *, const char *, const char *, const char *, QWidget *, const char *) +QProgressDialog::setLabelText(const char *) +QProgressDialog::setCancelButtonText(const char *) +QProgressDialog::styleChange(GUIStyle) +QProgressDialog::init(QWidget *, const char *, const char *, int) +QTabDialog::addTab(QWidget *, const char *) +QTabDialog::isTabEnabled(const char *) const +QTabDialog::setTabEnabled(const char *, bool) +QTabDialog::setDefaultButton(const char *) +QTabDialog::setCancelButton(const char *) +QTabDialog::setApplyButton(const char *) +QTabDialog::setOKButton(const char *) +QTabDialog::setOkButton(const char *) +QTabDialog::styleChange(GUIStyle) +QTabDialog::selected(const char *) +QObject::name(void) const +QApplication::setStyle(GUIStyle) +QApplication::palette(void) +QApplication::setPalette(const QPalette &, bool) +QApplication::font(void) +QApplication::setFont(const QFont &, bool) +QBrush::setStyle(BrushStyle) +QBrush::init(const QColor &, BrushStyle) +QObject::name(void) const +QClipboard::data(const char *) const +QClipboard::setData(const char *, void *) +QClipboard::setText(const char *) +QUrlDrag::decodeLocalFiles(QDropEvent *, QStrList &) +QObject::name(void) const +QStoredDrag::setEncodedData(QArrayT<char> const &) +QTextDrag::setText(const char *) +QImageDrag::canDecode(QDragMoveEvent *) +QTextDrag::canDecode(QDragMoveEvent *) +QUrlDrag::canDecode(QDragMoveEvent *) +QImageDrag::decode(QDropEvent *, QImage &) +QImageDrag::decode(QDropEvent *, QPixmap &) +QTextDrag::decode(QDropEvent *, QString &) +QUrlDrag::decode(QDropEvent *, QStrList &) +QDragMoveEvent::format(int) +QDragMoveEvent::provides(const char *) +QDragMoveEvent::data(const char *) +QDropEvent::data(const char *) +QEvent::peErrMsg(void) +QFont::substitute(const char *) +QFont::insertSubstitution(const char *, const char *) +QFont::removeSubstitution(const char *) +QFont::load(unsigned int) const +QFont::setFamily(const char *) +QFont::bold(void) const +QFont::setBold(bool) +QFont::handle(unsigned int) const +QFont::bold(void) const +QFontInfo::font(void) const +QFontInfo::reset(const QWidget *) +QFontInfo::type(void) const +QFontMetrics::inFont(char) const +QFontMetrics::leftBearing(char) const +QFontMetrics::rightBearing(char) const +QFontMetrics::width(char) const +QFontMetrics::width(const char *, int) const +QFontMetrics::boundingRect(char) const +QFontMetrics::boundingRect(const char *, int) const +QFontMetrics::boundingRect(int, int, int, int, int, const char *, int, int, int *, char **) const +QFontMetrics::size(int, const char *, int, int, int *, char **) const +QFontMetrics::font(void) const +QFontMetrics::reset(const QWidget *) +QFontMetrics::type(void) const +QObject::name(void) const +QGManager::setBorder(int) +QGManager::newSerChain(QGManager::Direction) +QGManager::newParChain(QGManager::Direction) +QGManager::add(QChain *, QChain *, int) +QGManager::addWidget(QChain *, QWidget *, int) +QGManager::addSpacing(QChain *, int, int, int) +QGManager::addBranch(QChain *, QChain *, int, int) +QGManager::setStretch(QChain *, int) +QGManager::activate(void) +QGManager::unFreeze(void) +QGManager::xChain(void) +QGManager::yChain(void) +QGManager::setMenuBar(QWidget *) +QGManager::mainWidget(void) +QGManager::remove(QWidget *) +QGManager::setName(QChain *, const char *) +QGManager::eventFilter(QObject *, QEvent *) +QGManager::resizeHandle(QWidget *, const QSize &) +QGManager::resizeAll(void) +QIconSet::setPixmap(const char *, QIconSet::Size, QIconSet::Mode) +QImage::imageFormat(const char *) +QImageIO::imageFormat(const char *) +QImage::load(const char *, const char *) +QImage::loadFromData(QArrayT<char>, const char *) +QImage::save(const char *, const char *) const +QImageIO::setFileName(const char *) +QImageIO::setDescription(const char *) +QBoxLayout::addB(QLayout *, int) +QObject::name(void) const +QLayout::basicManager(void) +QLayout::verChain(QLayout *) +QLayout::horChain(QLayout *) +QObject::name(void) const +QObject::tr(const char *) const +QPaintDevice::x11Screen(voidQPaintDevice::x11Depth(voidQPaintDevice::x11Cells(voidQPaintDevice::x11Colormap(voidQPaintDevice::x11DefaultColormap(void) QPaintDevice::x11Visual(voidQPaintDevice::x11DefaultVisual(void) +QPainter::translate(float, float) +QPainter::scale(float, float) +QPainter::shear(float, float) +QPainter::rotate(float) +QPainter::drawText(const QPoint &, const char *, int) +QPainter::drawText(const QRect &, int, const char *, int, QRect *, char **) +QPainter::drawText(int, int, const char *, int) +QPainter::drawText(int, int, int, int, int, const char *, int, QRect *, char **) +QPainter::boundingRect(int, int, int, int, int, const char *, int, char **) +QPainter::testf(unsigned short) const +QPainter::setf(unsigned short) +QPainter::setf(unsigned short, bool) +QPainter::clearf(unsigned short) +QPainter::setPen(PenStyle) +QPainter::setBrush(BrushStyle) +QPainter::setBackgroundMode(BGMode) +QPen::setStyle(PenStyle) +QPen::init(const QColor &, unsigned int, PenStyle) +QPicture::load(const char *) +QPicture::save(const char *) +QPixmap::isOptimized(void) const +QPixmap::optimize(bool) +QPixmap::isGloballyOptimized(void) +QPixmap::optimizeGlobally(bool) +QPixmap::imageFormat(const char *) +QPixmap::load(const char *, const char *, QPixmap::ColorMode) +QPixmap::load(const char *, const char *, int) +QPixmap::loadFromData(QArrayT<char>, const char *, int) +QPixmap::save(const char *, const char *) const +QPixmapCache::find(const char *) +QPixmapCache::find(const char *, QPixmap &) +QPixmapCache::insert(const char *, QPixmap *) +QPixmapCache::insert(const char *, const QPixmap &) +QPrinter::setPrinterName(const char *) +QPrinter::setOutputFileName(const char *) +QPrinter::setPrintProgram(const char *) +QPrinter::setDocName(const char *) +QPrinter::setCreator(const char *) +QRect::setX(int) +QRect::setY(int) +QRegion::exec(QArrayT<char> const &) +QObject::name(void) const +QObject::name(void) const +QSignalMapper::setMapping(const QObject *, const char *) +QSignalMapper::mapped(const char *) +QObject::name(void) const +QObject::name(void) const +QWidget::setCaption(const char *) +QWidget::setIconText(const char *) +QWidget::drawText(const QPoint &, const char *) +QWidget::drawText(int, int, const char *) +QWidget::acceptFocus(void) const +QWidget::setAcceptFocus(bool) +QWidget::create(unsigned int) +QWidget::create(void) +QWidget::internalMove(int, int) +QWidget::internalResize(int, int) +QWidget::internalSetGeometry(int, int, int, int) +QWidget::deferMove(const QPoint &) +QWidget::deferResize(const QSize &) +QWidget::cancelMove(voidQWidget::cancelResize(voidQWidget::sendDeferredEvents(voidQWidget::setBackgroundColorFromMode(voidQObject::name(void) const QWidget::setMask(QBitmapQWMatrix::setMatrix(float, float, float, float, float, float) +QWMatrix::map(float, float, float *, float *) const +QWMatrix::translate(float, float) +QWMatrix::scale(float, float) +QWMatrix::shear(float, float) +QWMatrix::rotate(float) +QBuffer::setBuffer(QArrayT<char>) +QDir::entryList(const char *, int, int) const +QDir::entryInfoList(const char *, int, int) const +QDir::mkdir(const char *, bool) const +QDir::rmdir(const char *, bool) const +QDir::exists(const char *, bool) +QDir::remove(const char *, bool) +QDir::rename(const char *, const char *, bool) +QDir::setCurrent(const char *) +QDir::match(const char *, const char *) +QDir::cleanDirPath(const char *) +QDir::isRelativePath(const char *) +QDir::setPath(const char *) +QDir::filePath(const char *, bool) const +QDir::absFilePath(const char *, bool) const +QDir::convertSeparators(const char *) +QDir::cd(const char *, bool) +QDir::setNameFilter(const char *) +QFile::setName(const char *) +QFile::exists(const char *) +QFile::remove(const char *) +QFileInfo::setFile(const QDir &, const char *) +QFileInfo::setFile(const char *) +QFile::exists(const char *) +QFileInfo::extension(void) const +QRegExp::match(const char *, int, int *) const +QRegExp::matchstr(unsigned short *, char *, char *) const +QString::resize(unsigned int) +QString::fill(char, int) +QString::find(const char *, int, bool) const +QString::findRev(const char *, int, bool) const +QString::leftJustify(unsigned int, char, bool) const +QString::rightJustify(unsigned int, char, bool) const +QString::insert(unsigned int, const char *) +QString::append(const char *) +QString::prepend(const char *) +QString::replace(const QRegExp &, const char *) +QString::replace(unsigned int, unsigned int, const char *) +QString::setStr(const char *) +QString::setNum(int) +QString::setNum(unsigned long) +QString::setExpand(unsigned int, char) +QButton::setText(const char *) +QComboBox::setEditText(const char *) +QComboBox::activated(const char *) +QComboBox::highlighted(const char *) +QComboBox::insertItem(const char *, int) +QComboBox::changeItem(const char *, int) +QComboBox::setStyle(GUIStyle) +QComboBox::setValidator(QValidator *) +QGroupBox::setTitle(const char *) +QHeader::moveAround(int, int) +QHeader::addLabel(const char *, int) +QHeader::setLabel(int, const char *, int) +QHeader::setOrientation(QHeader::Orientation) +QHeader::resizeEvent(QResizeEvent *QHeader::paintCell(QPainter *, int, intQHeader::setupPainter(QPainter *QHeader::cellHeight(intQHeader::cellWidth(int) QLabel::setText(const char *QLCDNumber::display(const char *) +QLCDNumber::resizeEvent(QResizeEvent *) +QLCDNumber::internalDisplay(const char *) +QLCDNumber::drawString(const char *, QPainter &, QBitArray *, bool) +QLCDNumber::drawDigit(const QPoint &, QPainter &, int, char, char) +QLCDNumber::drawSegment(const QPoint &, char, QPainter &, int, bool) +QLineEdit::event(QEvent *) +QLineEdit::setValidator(QValidator *) +QLineEdit::validateAndSet(const char *, int, int, int) +QLineEdit::setText(const char *) +QLineEdit::insert(const char *) +QLineEdit::textChanged(const char *) +QListBox::insertItem(const char *, int) +QListBox::inSort(const char *) +QListBox::changeItem(const char *, int) +QListBox::maxItemWidth(void) +QListBox::highlighted(const char *) +QListBoxItem::setText(const char *) +QListBox::selected(const char *) +QListViewItem::isExpandable(void) +QListView::setStyle(GUIStyle) +QMainWindow::addToolBar(QToolBar *, const char *, QMainWindow::ToolBarDock, bool) +QMenuData::insertItem(const QPixmap &, const QObject *, const char *, int) +QMenuData::insertItem(const QPixmap &, const char *, QPopupMenu *, int, int) +QMenuData::insertItem(const QPixmap &, const char *, const QObject *, const char *, int) +QMenuData::insertItem(const QPixmap &, const char *, const QObject *, const char *, int, int, int) +QMenuData::insertItem(const QPixmap &, const char *, int, int) +QMenuData::insertItem(const char *, QPopupMenu *, int, int) +QMenuData::insertItem(const char *, const QObject *, const char *, int) +QMenuData::insertItem(const char *, const QObject *, const char *, int, int, int) +QMenuData::insertItem(const char *, int, int) +QMenuData::changeItem(const QPixmap &, const char *, int) +QMenuData::changeItem(const char *, int) +QMenuData::insertAny(const char *, const QPixmap *, QPopupMenu *, int, int) +QMenuItem::setText(const char *) +QMultiLineEdit::textWidth(QString *) +QMultiLineEdit::repaintAll(void) +QMultiLineEdit::repaintDelayed(void) +QMultiLineEdit::setText(const char *) +QMultiLineEdit::append(const char *) +QPopupMenu::itemAtPos(const QPoint &) +QPopupMenu::actSig(int) +QRadioButton::mouseReleaseEvent(QMouseEvent *) +QRadioButton::keyPressEvent(QKeyEvent *) +QRangeControl::adjustValue(void) +QScrollBar::setOrientation(QScrollBar::Orientation) +QScrollView::horizontalScrollBar(void) +QScrollView::verticalScrollBar(void) +QScrollView::viewport(void) +QSlider::setOrientation(QSlider::Orientation) +QSpinBox::setSpecialValueText(const char *) +QSpinBox::setValidator(QValidator *) +QSpinBox::valueChanged(const char *) +QSpinBox::paletteChange(const QPalette &) +QSpinBox::enabledChange(bool) +QSpinBox::fontChange(const QFont &) +QSpinBox::styleChange(GUIStyle) +QSplitter::setOrientation(QSplitter::Orientation) +QSplitter::event(QEvent *) +QSplitter::childInsertEvent(QChildEvent *) +QSplitter::childRemoveEvent(QChildEvent *) +QSplitter::moveSplitter(short) +QSplitter::adjustPos(int) +QSplitter::splitterWidget(void) +QSplitter::startMoving(void) +QSplitter::moveTo(QPoint) +QSplitter::stopMoving(void) +QSplitter::newpos(void) const +QStatusBar::message(const char *) +QStatusBar::message(const char *, int) +QObject::name(void) const +QToolTipGroup::showTip(const char *) +QToolTip::add(QWidget *, const QRect &, const char *) +QToolTip::add(QWidget *, const QRect &, const char *, QToolTipGroup *, const char *) +QToolTip::add(QWidget *, const char *) +QToolTip::add(QWidget *, const char *, QToolTipGroup *, const char *) +QToolTip::tip(const QRect &, const char *) +QToolTip::tip(const QRect &, const char *, const char *) +QObject::name(void) const +QWhatsThis::add(QWidget *, const QPixmap &, const char *, const char *, bool) +QWhatsThis::add(QWidget *, const char *, bool) +QWhatsThis::textFor(QWidget *) +QWidgetStack::event(QEvent *) + +</pre> + +*/ |