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/misc.doc | |
download | qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip |
Add Qt3 development HEAD version
Diffstat (limited to 'doc/misc.doc')
-rw-r--r-- | doc/misc.doc | 1127 |
1 files changed, 1127 insertions, 0 deletions
diff --git a/doc/misc.doc b/doc/misc.doc new file mode 100644 index 0000000..82912d1 --- /dev/null +++ b/doc/misc.doc @@ -0,0 +1,1127 @@ +/**************************************************************************** +** +** Miscellaneous documentation that doesn't fit anywhere else +** +** 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 requirements 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 commonproblems.html +\title Brief Technical FAQ + + +This document describes how to use more than one Qt version on one +machine and how to use Qt on X11 without a window manager. In addition +it explains the most common source of link errors with Qt. + +Other frequently asked questions can be found in the +\link http://www.trolltech.com/developer/faqs/ FAQ index\endlink and +in the \link http://www.trolltech.com/developer/faqs/technical.html Technical FAQ\endlink. + +\list +\i \link #linkerror Link error, complaining about a lack of +<tt>vtbl</tt>, <tt>_vtbl</tt>, <tt>__vtbl</tt> or similar\endlink +\i \link #diffver Using different versions of Qt on the same +machine\endlink + \list + \i \link #qtbin Developers building for a single version of Qt on Unix - Qt binary packages\endlink + \i \link #qtsrc Developers building for two versions of Qt on Unix - Qt sources\endlink + \endlist +\i \link #nowinman Using Qt on X11 without a window manager\endlink +\i \link distributingqt.html Distributing Qt Applications\endlink +\endlist + +\target linkerror +\section1 Link error, complaining about a lack of \c vtbl, \c _vtbl, \c __vtbl or similar + +This indicates that you've included the Q_OBJECT macro in a class +declaration and probably also run the moc, but forgot to link the +moc-generated object code into your executable. See \link moc.html +Using the Meta Object Compiler\endlink for details on how to use moc. + +\target diffver +\section1 Using different versions of Qt on the same machine + +Qt programs need the following components of a Qt distribution: + +<dl> + +<dt>Header files - Compile time + +<dd>Programmers need to include the Qt header files. The Qt header files +are usually located in the \c include subdirectory of Qt distributions. +Care must be taken to include the header files of the relevant release of +Qt. Those with a command-line compiler will typically use options such as +\c{/I%QTDIR%\include} or \c{-I"$QTDIR"/include} provided \c QTDIR specifies +the relevant release of Qt. + +<dt>Meta Object Compiler and other tools - Compile time + +<dd>Programmers need to run \e moc and other tools such as \e uic. These +tools are usually located in the \c bin subdirectory of Qt distributions. +Either run \c "$QTDIR"/bin/moc and \c "$QTDIR"/bin/uic or add \c "$QTDIR"/bin +to your \c PATH and run \c moc and \c uic. If you use \c qmake the +appropriate lines will be added to your Makefiles so that \e uic and +\e moc will be executed as required. + +<dt>Static or shared libraries - Link time + +<dd>Programmers need to link with the Qt static or shared libraries. The Qt +libraries are usually located in the \c lib subdirectory of Qt distributions. +Care must be taken to link with the libraries of the relevant release of +Qt. Those with a command-line compiler will typically use options such as +\c{/L%QTDIR%\lib\qt.lib} or \c{-L"$QTDIR"/lib} \c -lqt provided \c QTDIR +specifies the relevant release of Qt. + +<dt>Shared libraries - Run time + +<dd>Users of programs linked with shared Qt libraries need these same +shared libraries to run these programs. The Qt libraries are usually +located in the \c lib subdirectory of Qt distributions. Shared libraries +are made available to programs in places such as \c{C:\windows\system} on +Windows platforms, directories listed in file \c /etc/ld.so.conf on Linux, +standard \c lib directories on Unix, or directories listed in environment +variables \c LD_LIBRARY_PATH, \c SHLIB_PATH, or \c LIBPATH on various Unix +flavours. Make the relevant Qt libraries available using one of these +mechanisms. + +</dl> + +Qt distributions consist of different files needed at compile time, +link time, or run time. Trolltech distributes Qt in the form of a +source package that contain all these files once they have been built. + +Other vendors distribute Qt in the form of binary packages. Binary packages +usually consist of two parts: + +\list +\i shared libraries in the run time package, usually called \c qt3. + +\i header files, static libraries, the moc and other tools in the developers' +kit, usually called \c qt3-dev. + +\endlist + +Depending on how you are using Qt, you need to make specific parts of +the Qt distribution available to your programs. Typical situations are +described below. + +\target qtbin +\section2 Developers building for a single version of Qt on Unix - Qt binary packages + +You build programs with a single version of Qt, but you still need +to run programs linked with another version of Qt. You are typically +a Linux developer who builds programs for Qt 3.x on a KDE desktop based +on Qt 2.x. Qt packages are usually split into a shared library +package with a name like \c qt and a developer package with a name +like \c qt-dev. You will need the appropriate packages: + +\list + +\i To build programs you will need the header files, the libraries, +the moc and other tools from Qt 3.x. They are included in the developer +package of Qt 3.x (\c qt3-dev or similar). + +\i To run programs you will need the shared libraries of Qt 3.x and +Qt 2.x. They are included in the regular packages of Qt 3.x (\c qt3 +or similar) and Qt 2.x (\c qt2 or similar). + +\endlist + +Just install the packages, \c qt2, \c qt3, and \c qt3-dev. You may +need to set the environment variable \c QTDIR to point to Qt 3.x. + +\target qtsrc +\section2 Developers building for two versions of Qt on Unix - Qt sources + +You build and run programs for Qt 2.x and Qt 3.x. You will need: + +\list + +\i the header files, the libraries, the moc and other tools from Qt 3.x +and Qt 2.x to build programs, + +\i the shared libraries of Qt 3.x and Qt 2.x to run programs. + +\endlist + +Get the source distributions of both Qt 2.x and Qt 3.x. + +\list 1 + +\i Install and build Qt 2.x and Qt 3.x, usually in \c /opt or +\c /usr/local. In the case of \c /opt: + +\code +$ cd /opt +$ gunzip -c \c qt-x11-2.3.1.tar.gz | tar xf - +$ cd qt-2.3.1 +$ setenv QTDIR /opt/qt-2.3.1 +$ configure [options] +$ make + +$ cd /opt +$ gunzip -c qt-x11-free-3.0.0.tar.gz | tar xf - +$ cd qt-3.0.0 +$ setenv QTDIR /opt/qt-3.0.0 +$ configure [options] +$ make +\endcode + +\i Make shared libraries available to programs at run time. Either +add both \c /opt/qt-2.3.1/lib and \c /opt/qt-3.0.0/lib to your environment +variable \c LD_LIBRARY_PATH or file \c /etc/ld.so.conf or whataver mechanism +you're using, or make links to the libraries in a standard directory like +\c /usr/local/lib: + +\code +cd /usr/local/lib +ln -s /opt/qt-2.3.1/lib/libqt.so.2 . +ln -s /opt/qt-2.3.1/lib/libqt-mt.so.2 . +ln -s /opt/qt-2.3.1/lib/libqutil.so.1 . +ln -s /opt/qt-3.0.0/lib/libqt.so.3 . +ln -s /opt/qt-3.0.0/lib/libqui.so.1 . +\endcode + +\endlist + +To develop with Qt 2.x use: + +\code +setenv QTDIR /opt/qt-2.3.1 +setenv PATH ${QTDIR}/bin:${PATH} +\endcode + +To develop with Qt 3.x use: + +\code +setenv QTDIR /opt/qt-3.0.0 +setenv PATH ${QTDIR}/bin:${PATH} +\endcode + +Setting \c QTDIR ensures that the proper resources are used, such as the +documentation appropriate to the version of Qt you're using. Also +your Makfiles may refer to \c "$QTDIR"/include and \c "$QTDIR"/lib to +include the proper header files and link with the proper libraries. +Setting the \c PATH ensures that the proper version of moc and other +tools is being used. + +\target nowinman +\section1 Using Qt on X11 without a window manager + +When using Qt without a window manager on Unix/X11, you will most +likely experience focus problems. Without a window manager, there is +no focus handling on X11, and no concept of an active window +either. If you want your application to work in such an environment, +you have to explicitly mark a window as active \e after showing it: + +\code + yourWindow->show(); + yourWindow->setActiveWindow(); +\endcode + +Note that setActiveWindow() won't work if the widget does not become +physically visible during this event cycle. However, without a window +manager running, this is guaranteed to happen. For the curious reader: +setActiveWindow() emulates a window manager by explicitly setting the +X Input Focus to a widget's top level window. + +*/ + +/*! \page bughowto.html +\title How to Report A Bug + +If you think you have found a bug in Qt, we would like to hear +about it so that we can fix it. + +Before reporting a bug, please check the +\link commonproblems.html Brief Technical FAQ\endlink, the +\link http://www.trolltech.com/developer/faqs/ FAQs\endlink, and the +\link http://www.trolltech.com/platforms/ Platform Notes\endlink +on our web site to see if the issue is already known. + +Always include the following information in your bug report: + +\list 1 +\i The name and version number of your compiler +\i The name and version number of your operating system +\i The version of Qt you are using, and what configure options it was +compiled with. +\endlist + +If the problem you are reporting is only at visible run-time, try to +create a small test program that shows the problem when run. Often, +such a program can be created with some minor changes to one +of the many example programs in the \c{qt/examples} directory. + +Please send the bug report to +\link mailto:qt-bugs@trolltech.com qt-bugs@trolltech.com\endlink. +*/ + + + + +/*! \page license.html + +\title Qt Open Source Edition License Agreement + +The Qt Open Source Edition is distributed under the Q Public License (QPL). +It allows free use of Qt Open Source Edition for running software developed by +others, and free use of Qt Open Source Edition for development of free and open source +software. There is \link http://www.trolltech.com/qpl/ more information +about the QPL\endlink at the Trolltech web site. + +Note that the Qt/Embedded Open Source Edition is <b>not</b> distributed +under the QPL, but under the \link gpl.html GNU General Public +License (GPL)\endlink. + +For development non-free/proprietary software, the Qt Professional +Edition is available. It has a normal commercial library license, with +none of the special restrictions of the QPL or the GPL. + +<hr> + +<center> +<h2> +THE Q PUBLIC LICENSE +version 1.0 +</h2> +<b> +Copyright (C) 1999-2008 Trolltech ASA, Norway.<br> +Everyone is permitted to copy and distribute this license document. +</b> +</center> + +The intent of this license is to establish freedom to share and change the +software regulated by this license under the open source model. + +This license applies to any software containing a notice placed by the +copyright holder saying that it may be distributed under the terms of +the Q Public License version 1.0. Such software is herein referred to as +the Software. This license covers modification and distribution of the +Software, use of third-party application programs based on the Software, +and development of free software which uses the Software. + + +<h3 align="center"> + Granted Rights +</h3> + +1. You are granted the non-exclusive rights set forth in this license + provided you agree to and comply with any and all conditions in this + license. Whole or partial distribution of the Software, or software + items that link with the Software, in any form signifies acceptance of + this license. + +2. You may copy and distribute the Software in unmodified form provided + that the entire package, including - but not restricted to - copyright, + trademark notices and disclaimers, as released by the initial developer + of the Software, is distributed. + +3. You may make modifications to the Software and distribute your + modifications, in a form that is separate from the Software, such as + patches. The following restrictions apply to modifications: + +<blockquote> + a. Modifications must not alter or remove any copyright notices in + the Software. + + b. When modifications to the Software are released under this + license, a non-exclusive royalty-free right is granted to the + initial developer of the Software to distribute your modification + in future versions of the Software provided such versions remain + available under these terms in addition to any other license(s) of + the initial developer. +</blockquote> + +4. You may distribute machine-executable forms of the Software or + machine-executable forms of modified versions of the Software, provided + that you meet these restrictions: + +<blockquote> + a. You must include this license document in the distribution. + + b. You must ensure that all recipients of the machine-executable forms + are also able to receive the complete machine-readable source code + to the distributed Software, including all modifications, without + any charge beyond the costs of data transfer, and place prominent + notices in the distribution explaining this. + + c. You must ensure that all modifications included in the + machine-executable forms are available under the terms of this + license. + +</blockquote> + +5. You may use the original or modified versions of the Software to + compile, link and run application programs legally developed by you + or by others. + +6. You may develop application programs, reusable components and other + software items that link with the original or modified versions of the + Software. These items, when distributed, are subject to the following + requirements: + +<blockquote> + a. You must ensure that all recipients of machine-executable forms of + these items are also able to receive and use the complete + machine-readable source code to the items without any charge + beyond the costs of data transfer. + + b. You must explicitly license all recipients of your items to use + and re-distribute original and modified versions of the items in + both machine-executable and source code forms. The recipients must + be able to do so without any charges whatsoever, and they must be + able to re-distribute to anyone they choose. + + c. If the items are not available to the general public, and the + initial developer of the Software requests a copy of the items, + then you must supply one. +</blockquote> + + +<h3 align="center"> + Limitations of Liability +</h3> + +In no event shall the initial developers or copyright holders be liable +for any damages whatsoever, including - but not restricted to - lost +revenue or profits or other direct, indirect, special, incidental or +consequential damages, even if they have been advised of the possibility +of such damages, except to the extent invariable law, if any, provides +otherwise. + + +<h3 align="center"> + No Warranty +</h3> + +The Software and this license document are provided AS IS with NO WARRANTY +OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. + +<h3 align="center"> + Choice of Law +</h3> + +This license is governed by the Laws of Norway. Disputes shall be settled +by Oslo City Court. + +*/ + + +/*! \page gpl.html +\title GNU General Public License + + The Qt GUI Toolkit is Copyright (C) 1994-2008 Trolltech ASA. + + The Qt Open Source Edition and the Qt/Embedded Open Source Edition are available + under the GPL. The Qt Open Source Edition (for Unix/X11) is also available + under the \link license.html QPL\endlink. + +\code + You may use, distribute and copy the Qt GUI Toolkit under the terms of + GNU General Public License version 2, which is displayed below. + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Steet, Fifth Floor, + Boston, MA 02110-1301, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. +\endcode +*/ + + + +/*! \page troll.html + +\title Company Information + +Trolltech is an international software company with +headquarters in Oslo, the capital of Norway, and with offices +in Brisbane, Australia, and Redwood City, California. + +Our flagship product is \link +http://www.trolltech.com/products/qt.html Qt\endlink, the +multi-platform C++ GUI toolkit. Qt enables you to build professional, +efficient, portable and maintainable GUI applications quickly and +easily. + +\link http://www.trolltech.com/products/embedded/index.html +Qt/Embedded\endlink, the embedded version of Qt, is designed to power +todays new generation of embedded computers and electronic consumer +devices. On top of that, \link +http://www.trolltech.com/products/qtopia/index.html Qtopia\endlink +provides a window system and application suite for handheld devices. + +\section1 Software that makes Sense + +Our motto expresses the vision behind our products. We design our +products to give our customers the feeling of "this is the way +that things were always meant to be". + +We know that it is crucial for our customers to have good tools for +making good software. Therefore, we do not compromise our demands for +superior design and technical quality when we develop our +products. + +Trolltech is also known for providing top quality technical support +to our customers. At Trolltech, support inquiries are handled by the +most qualified developers and designers themselves. + +\section1 History + +Trolltech was founded in 1994. The core team of designers at Trolltech +started developing Qt in 1992, and the first commercial version of Qt was +released in 1995. Since then, Trolltech has experienced rapid growth, and +Qt is currently used in thousands of successful commercial software +development projects world wide. At Trolltech, we continously work to +improve and expand Qt to ensure that it always represents the state of the +art in usability, look and feel, performance, and stability. + +For more information, please visit the \link http://www.trolltech.com +Trolltech website\endlink. + +\section1 Contact Information + +<br clear="all"> + +<table cellpadding=3 cellspacing=0 border="0" bgcolor="#E5E5E5"> +<tr><th colspan=6 valign="top" bgcolor="#a2c511">Email</th></tr> +<tr> +<td rowspan=4><br></td> +<td colspan=2>\link mailto:info@trolltech.com <strong>info@trolltech.com</strong>\endlink + +<td colspan=2>\link mailto:sales@trolltech.com <strong>sales@trolltech.com</strong>\endlink +<td rowspan=4><br></td> +<tr> +<td ><br></td> +<td valign="top"> General inquiries and questions. Please check the +\link http://www.trolltech.com/faq/ FAQ\endlink to see if your question is already answered there.</td> +<td ><br></td> +<td valign="top"> Inquires related to purchasing, pricing and availability of +Trolltech products</td></tr> +<tr> +<td colspan=2>\link mailto:www@trolltech.com <strong>www@trolltech.com</strong>\endlink +<td colspan=2>\link mailto:qt-bugs@trolltech.com <strong>qt-bugs@trolltech.com</strong>\endlink +<tr> +<td ><br></td> +<td valign="top"> Comments about our web pages</td> +<td ><br></td> +<td valign="top"> +Use this address for bug reports; \e please read (the very short) +\link bughowto.html How to Report a Bug\endlink page \e first. +</td></tr> +<tr><td ><br></td> +<td colspan=4 valign="top">Note that Trolltech uses the +\link http://mail-abuse.org/rbl/ RBL\endlink and +\link http://work-rss.mail-abuse.org/rss/ RSS\endlink databases to cut down on +spam. If your mail server is listed, you will regrettably not be able to +send us mail. The \link http://www.mail-abuse.org/tsi/ MAPS TSI\endlink +pages provide information about how to secure your server. +</td><td ><br></td></tr> +<tr bgcolor="#ffffff"><td bgcolor="#ffffff" colspan="6"> <br> </td></tr> +<tr><th colspan=6 valign="top" bgcolor="#a2c511">Norway Office</th></tr> +</tr> +<tr> +<td rowspan=4><br></td> +<td colspan=2><strong>Telephone</strong> +<td colspan=2><strong>Street/Mail Address</strong> +<td rowspan=4><br></td> +<tr> +<td ><br></td> +<td valign="top"> General inquiries: +47 21 60 48 00</td> +<td rowspan=3><br></td> +<td valign="top" rowspan=3> Sandakerveien 116<br> PO Box 4332 Nydalen<br> NO-0402 Oslo<br> Norway</td></tr> +<tr> +<td colspan=2><strong>Telefax</strong></td> +<tr> +<td ><br></td> +<td valign="top"> All inquiries: +47 21 60 48 01</td> +<tr bgcolor="#ffffff"><td bgcolor="#ffffff" colspan="6"> <br> </td></tr> +<tr><th colspan=6 valign="top" bgcolor="#a2c511">USA Office</th></tr> +</tr> +<tr> +<td rowspan=4><br></td> +<td colspan=2><strong>Telephone</strong> +<td colspan=2><strong>Street/Mail Address</strong> +<td rowspan=4><br></td> +<tr> +<td ><br></td> +<td valign="top"> General inquiries: (+1) 650-551-1676</td> +<td rowspan=3><br></td> +<td valign="top" rowspan=3> 555 Twin Dolphin Drive<br> Suite 280<br> Redwood City, CA 94065<br> USA</td></tr> +<tr> +<td colspan=2><strong>Telefax</strong></td> +<tr> +<td ><br></td> +<td valign="top"> All inquiries: (+1) 650-551-1851</td> +</table> + +*/ + + +/*! \page guibooks.html + +\title Books about GUI + +This is not a comprehensive list of books, there are many other +books worth buying. Here we mention just a few GUI/UI books that don't +gather dust in our shelves. + +<b>C++ GUI Programming with Qt 3</b> by Jasmin Blanchette and Mark +Summerfield, ISBN 0-13-124072-2. This is the Official Qt book written +by two veteran Trolls. +\link http://www.amazon.com/exec/obidos/ASIN/0131240722/trolltech/ +(Read more about it or buy it.)\endlink + +<b>The Design of Everyday Things</b> by Donald Norman, +ISBN 0-38526774-6, is one of the classics of human interface design. +Norman shows how badly something as simple as a kitchen stove can be +designed, and everyone should read it who will design a dialog box, +write an error message, or design just about anything else humans are +supposed to use. +\link http://www.amazon.com/exec/obidos/ASIN/0385267746/trolltech/t +(Read more or buy it.)\endlink + +\target fowler +<b>GUI Design Handbook</b> by Susan Fowler, ISBN 0-07-059274-8, is an +alphabetical dictionary of widgets and other user interface elements, +with comprehensive coverage of each. Each chapter covers one widget +or other element, contains the most important recommendation from the +Macintosh, Windows and Motif style guides, notes about common +problems, comparison with other widgets that can serve some of the +same roles as this one, etc. + +\link http://www.amazon.com/exec/obidos/ASIN/0070592748/trolltech/t +(Read more or buy it.)\endlink + +<b>Macintosh Human Interface Guidelines</b>, second edition, ISBN +0-201-62216-5, is worth buying for the \e {don't}s alone. Even +though you're not writing Macintosh software, avoiding most of what it +advises against will produce more easily comprehensible software. +Doing what it tells you to \e do helps, too. +\link http://www.amazon.com/exec/obidos/ASIN/0201622165/trolltech/t +(Read more or buy it.)\endlink + +This book is now available +\link http://developer.apple.com/techpubs/mac/HIGuidelines/HIGuidelines-2.html +on the web\endlink and there is a +\link http://developer.apple.com/techpubs/mac/HIGOS8Guide/thig-2.html Mac +OS 8 addendum.\endlink + +<b>The Microsoft Windows User Experience</b>, ISBN 1-55615-679-0, +is Microsoft's look and feel Bible. Indispensable for everyone who +has customers that worship Microsoft, and it's quite good, too. +\link http://www.amazon.com/exec/obidos/ASIN/0735605661/trolltech/t +(Read more or buy it.)\endlink + +Microsoft's guidelines are often available on the web, but have +occasionally been hidden in an impenetrable maze of javascript. +\link http://msdn.microsoft.com/library/en-us/dnwue/html/welcome.asp Try and see.\endlink + +<b>The Icon Book</b> by William Horton, ISBN 0-471-59900-X, is a +perhaps the only thorough coverage of icons and icon use in software. +In order for icons to be successful, people must be able to do four +things with them: decode, recognize, find and activate them. This +book explains these goals from scratch and how to reach them, both +with single icons and icon families. Some 500 examples are scattered +throughout the text, generally in groups of four or five. +\link http://www.amazon.com/exec/obidos/ASIN/047159900X/trolltech/t +(Read more or buy it.)\endlink + +\section1 <nobr>Buying these books from</nobr> +\link http://www.amazon.com/text/ Amazon.com.\endlink + +These books are made available in association with Amazon.com, our +favorite on-line bookstore. Here is more information about +\link http://www.amazon.com/exec/obidos/subst/help/shipping-policy.html/t +Amazon.com's shipping options\endlink and its +\link http://www.amazon.com/exec/obidos/subst/help/desk.html/t +customer service.\endlink When you buy a book by following one of these +links, Amazon.com gives about 15% of the purchase price to +\link http://www.amnesty.org Amnesty International.\endlink + +*/ + + +/*! \page licenses.html +\title Licenses for Code Used in Qt + +Qt contains a little code that is not under the \link license.html +QPL\endlink, the \link gpl.html GPL\endlink, or the Qt Commercial +License Agreement, but rather under specific highly permissive +licenses from the original authors. This page lists the licenses used +for that code, names the authors, and links to the points where it is +used. + +Trolltech gratefully acknowledges these and others contribution to +Qt. We recommend that all programs that use Qt also acknowledge these +contributions, and quote all these license statements in an appendix +to the documentation. + +\legaleselist + +*/ + + +/*! \page geometry.html +\title Window Geometry + +\section1 Overview + +QWidget provides several functions that deal with a widget's +geometry. Some of these functions operate on the pure client area +(i.e. the window excluding the window frame), others include the +window frame. The differentiation is done in a way that covers the +most common usage transparently. + +\table +\row +\i <strong>Including the window frame: +\i x(), y(), frameGeometry(), pos() and move() +\row +\i <strong>Excluding the window frame:</strong> +\i geometry(), width(), height(), rect() and size() +\endtable + +Note that the distinction only matters for decorated top-level +widgets. For all child widgets, the frame geometry is equal to the +widget's client geometry. + +This diagram shows most of the functions in use: +\img geometry.png Geometry diagram + +\section1 Unix/X11 peculiarities + +On Unix/X11, a window does not have a frame until the window manager +decorates it. This happens asynchronously at some point in time after +calling show() and the first paint event the window receives: or it +does not happen at all. Bear in mind that X11 is policy-free (others +call it flexible). Thus you cannot make any safe assumption about the +decoration frame your window will get. Basic rule: there's always one +user who uses a window manager that breaks your assumption, and who +will complain to you. + +Furthermore, a toolkit cannot simply place windows on the screen. All +Qt can do is to send certain hints to the window manager. The window +manager, a separate process, may either obey, ignore or misunderstand +them. Due to the partially unclear Inter-Client Communication +Conventions Manual (ICCCM), window placement is handled quite +differently in existing window managers. + +X11 provides no standard or easy way to get the frame geometry once +the window is decorated. Qt solves this problem with nifty heuristics +and clever code that works on a wide range of window managers that +exist today. Don't be surprised if you find one where frameGeometry() +returns bogus results though. + +Nor does X11 provide a way to maximize a window. The showMaximized() +function in Qt therefore has to emulate the feature. Its result +depends on the result of frameGeometry() and the capability of the +window manager to do proper window placement, neither of which can be +guaranteed. + +\section1 Restoring a Window's Geometry + +A common task in modern applications is to restore a window's geometry +in a later session. On Windows, this is basically storing the result +of geometry() and calling setGeometry() in the next session before +calling show(). On X11, this won't work because an invisible window +doesn't have a frame yet. The window manager would decorate the window +later. When this happens, the window shifts towards the bottom/right +corner of the screen depending on the size of the decoration frame. X +theoretically provides a way to avoid this shift. Our tests have +shown, though, that almost all window managers fail to implement this +feature. + +A workaround is to call setGeometry() after show(). This has the +two disadvantages that the widget appears at a wrong place for a +millisecond (results in flashing) and that currently only every +second window manager gets it right. A safer solution is to store +both pos() and size() and to restore the geometry using resize() and +move() before calling show(), as demonstrated in the following +example: + +\code + MyWidget* widget = new MyWidget + ... + QPoint p = widget->pos(); // store position + QSize s = widget->size(); // store size + ... + widget = new MyWidget; + widget->resize( s ); // restore size + widget->move( p ); // restore position + widget->show(); // show widget +\endcode + +This method works on both MS-Windows and most existing X11 window +managers. + +*/ |