<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/tools/designer/uilib/qwidgetfactory.cpp:207 --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>TQWidgetFactory Class</title> <style type="text/css"><!-- fn { margin-left: 1cm; text-indent: -1cm; } a:link { color: #004faf; text-decoration: none } a:visited { color: #672967; text-decoration: none } body { background: #ffffff; color: black; } --></style> </head> <body> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr bgcolor="#E5E5E5"> <td valign=center> <a href="index.html"> <font color="#004faf">Home</font></a> | <a href="classes.html"> <font color="#004faf">All Classes</font></a> | <a href="mainclasses.html"> <font color="#004faf">Main Classes</font></a> | <a href="annotated.html"> <font color="#004faf">Annotated</font></a> | <a href="groups.html"> <font color="#004faf">Grouped Classes</font></a> | <a href="functions.html"> <font color="#004faf">Functions</font></a> </td> <td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>TQWidgetFactory Class Reference</h1> <p>The TQWidgetFactory class provides for the dynamic creation of widgets from TQt Designer .ui files. <a href="#details">More...</a> <p><tt>#include <<a href="qwidgetfactory-h.html">ntqwidgetfactory.h</a>></tt> <p><a href="qwidgetfactory-members.html">List of all member functions.</a> <h2>Public Members</h2> <ul> <li class=fn><a href="#TQWidgetFactory"><b>TQWidgetFactory</b></a> ()</li> <li class=fn>virtual <a href="#~TQWidgetFactory"><b>~TQWidgetFactory</b></a> ()</li> <li class=fn>virtual TQWidget * <a href="#createWidget"><b>createWidget</b></a> ( const TQString & className, TQWidget * parent, const char * name ) const</li> </ul> <h2>Static Public Members</h2> <ul> <li class=fn>TQWidget * <a href="#create"><b>create</b></a> ( const TQString & uiFile, TQObject * connector = 0, TQWidget * parent = 0, const char * name = 0 )</li> <li class=fn>TQWidget * <a href="#create-2"><b>create</b></a> ( TQIODevice * dev, TQObject * connector = 0, TQWidget * parent = 0, const char * name = 0 )</li> <li class=fn>void <a href="#addWidgetFactory"><b>addWidgetFactory</b></a> ( TQWidgetFactory * factory )</li> <li class=fn>void <a href="#loadImages"><b>loadImages</b></a> ( const TQString & dir )</li> <li class=fn>TQStringList <a href="#widgets"><b>widgets</b></a> ()</li> <li class=fn>bool <a href="#supportsWidget"><b>supportsWidget</b></a> ( const TQString & widget )</li> </ul> <hr><a name="details"></a><h2>Detailed Description</h2> <p> The TQWidgetFactory class provides for the dynamic creation of widgets from TQt Designer .ui files. <p> This class basically offers two things: <p> <ul> <p> <li> Dynamically creating widgets from <a href="designer-manual.html">TQt Designer</a> user interface description files. You can do this using the static function <a href="#create">TQWidgetFactory::create</a>(). This function also performs signal and slot connections, tab ordering, etc., as defined in the .ui file, and returns the top-level widget in the .ui file. After creating the widget you can use <a href="ntqobject.html#child">TQObject::child</a>() and <a href="ntqobject.html#queryList">TQObject::queryList</a>() to access child widgets of this returned widget. <p> <li> Adding additional widget factories to be able to create custom widgets. See <a href="#createWidget">createWidget</a>() for details. <p> </ul> <p> This class is not included in the TQt library itself. To use it you must link against <tt>libtqui.so</tt> (Unix) or <tt>tqui.lib</tt> (Windows), which is built into <tt>INSTALL/lib</tt> if you built <em>TQt Designer</em> (<tt>INSTALL</tt> is the directory where TQt is installed ). <p> If you create a <a href="ntqmainwindow.html">TQMainWindow</a> using a TQWidgetFactory, be aware that it already has a central widget. Therefore, you need to delete this one before setting another one. <p> See the "Creating Dynamic Dialogs from .ui Files" section of the <a href="designer-manual.html">TQt Designer manual</a> for an example. See also the <a href="ntqwidgetplugin.html">TQWidgetPlugin</a> class and the <a href="plugins-howto.html">Plugins documentation</a>. <hr><h2>Member Function Documentation</h2> <h3 class=fn><a name="TQWidgetFactory"></a>TQWidgetFactory::TQWidgetFactory () </h3> Constructs a TQWidgetFactory. <h3 class=fn><a name="~TQWidgetFactory"></a>TQWidgetFactory::~TQWidgetFactory ()<tt> [virtual]</tt> </h3> Destructor. <h3 class=fn>void <a name="addWidgetFactory"></a>TQWidgetFactory::addWidgetFactory ( <a href="ntqwidgetfactory.html">TQWidgetFactory</a> * factory )<tt> [static]</tt> </h3> Installs a widget factory <em>factory</em>, which normally contains additional widgets that can then be created using a TQWidgetFactory. See <a href="#createWidget">createWidget</a>() for further details. <h3 class=fn><a href="ntqwidget.html">TQWidget</a> * <a name="create"></a>TQWidgetFactory::create ( const <a href="ntqstring.html">TQString</a> & uiFile, <a href="ntqobject.html">TQObject</a> * connector = 0, <a href="ntqwidget.html">TQWidget</a> * parent = 0, const char * name = 0 )<tt> [static]</tt> </h3> <p> Loads the <em>TQt Designer</em> user interface description file <em>uiFile</em> and returns the top-level widget in that description. <em>parent</em> and <em>name</em> are passed to the constructor of the top-level widget. <p> This function also performs signal and slot connections, tab ordering, etc., as described in the .ui file. In <em>TQt Designer</em> it is possible to add custom slots to a form and connect to them. If you want these connections to be made, you must create a class derived from <a href="ntqobject.html">TQObject</a>, which implements all these slots. Then pass an instance of the object as <em>connector</em> to this function. If you do this, the connections to the custom slots will be done using the <em>connector</em> as slot. <p> If something fails, 0 is returned. <p> The ownership of the returned widget is passed to the caller. <h3 class=fn><a href="ntqwidget.html">TQWidget</a> * <a name="create-2"></a>TQWidgetFactory::create ( <a href="ntqiodevice.html">TQIODevice</a> * dev, <a href="ntqobject.html">TQObject</a> * connector = 0, <a href="ntqwidget.html">TQWidget</a> * parent = 0, const char * name = 0 )<tt> [static]</tt> </h3> This is an overloaded member function, provided for convenience. It behaves essentially like the above function. <p> Loads the user interface description from device <em>dev</em>. <h3 class=fn><a href="ntqwidget.html">TQWidget</a> * <a name="createWidget"></a>TQWidgetFactory::createWidget ( const <a href="ntqstring.html">TQString</a> & className, <a href="ntqwidget.html">TQWidget</a> * parent, const char * name ) const<tt> [virtual]</tt> </h3> Creates a widget of the type <em>className</em> passing <em>parent</em> and <em>name</em> to its constructor. <p> If <em>className</em> is a widget in the TQt library, it is directly created by this function. If the widget isn't in the TQt library, each of the installed widget plugins is asked, in turn, to create the widget. As soon as a plugin says it can create the widget it is asked to do so. It may occur that none of the plugins can create the widget, in which case each installed widget factory is asked to create the widget (see <a href="#addWidgetFactory">addWidgetFactory</a>()). If the widget cannot be created by any of these means, 0 is returned. <p> If you have a custom widget, and want it to be created using the widget factory, there are two approaches you can use: <p> <ol type=1> <p> <li> Write a widget plugin. This allows you to use the widget in <em>TQt Designer</em> and in this TQWidgetFactory. See the widget plugin documentation for further details. (See the "Creating Custom Widgets with Plugins" section of the <a href="designer-manual.html">TQt Designer manual</a> for an example. <p> <li> Subclass TQWidgetFactory. Then reimplement this function to create and return an instance of your custom widget if <em>className</em> equals the name of your widget, otherwise return 0. Then at the beginning of your program where you want to use the widget factory to create widgets do a: <pre> TQWidgetFactory::<a href="#addWidgetFactory">addWidgetFactory</a>( new MyWidgetFactory ); </pre> where MyWidgetFactory is your TQWidgetFactory subclass. <p> </ol> <h3 class=fn>void <a name="loadImages"></a>TQWidgetFactory::loadImages ( const <a href="ntqstring.html">TQString</a> & dir )<tt> [static]</tt> </h3> If you use a pixmap collection (which is the default for new projects) rather than saving the pixmaps within the .ui XML file, you must load the pixmap collection. TQWidgetFactory looks in the default <a href="qmimesourcefactory.html">TQMimeSourceFactory</a> for the pixmaps. Either add it there manually, or call this function and specify the directory where the images can be found, as <em>dir</em>. This is normally the directory called <tt>images</tt> in the project's directory. <h3 class=fn>bool <a name="supportsWidget"></a>TQWidgetFactory::supportsWidget ( const <a href="ntqstring.html">TQString</a> & widget )<tt> [static]</tt> </h3> Returns TRUE if the widget factory can create the specified <em>widget</em>; otherwise returns FALSE. <h3 class=fn><a href="ntqstringlist.html">TQStringList</a> <a name="widgets"></a>TQWidgetFactory::widgets ()<tt> [static]</tt> </h3> Returns the names of the widgets this factory can create. <!-- eof --> <hr><p> This file is part of the <a href="index.html">TQt toolkit</a>. Copyright © 1995-2007 <a href="http://www.trolltech.com/">Trolltech</a>. All Rights Reserved.<p><address><hr><div align=center> <table width=100% cellspacing=0 border=0><tr> <td>Copyright © 2007 <a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a> <td align=right><div align=right>TQt 3.3.8</div> </table></div></address></body> </html>