TQWidgetFactory Class Reference
The TQWidgetFactory class provides for the dynamic creation of widgets
from TQt Designer .ui files.
More...
#include <ntqwidgetfactory.h>
List of all member functions.
Public Members
Static Public Members
- TQWidget * create ( const TQString & uiFile, TQObject * connector = 0, TQWidget * parent = 0, const char * name = 0 )
- TQWidget * create ( TQIODevice * dev, TQObject * connector = 0, TQWidget * parent = 0, const char * name = 0 )
- void addWidgetFactory ( TQWidgetFactory * factory )
- void loadImages ( const TQString & dir )
- TQStringList widgets ()
- bool supportsWidget ( const TQString & widget )
Detailed Description
The TQWidgetFactory class provides for the dynamic creation of widgets
from TQt Designer .ui files.
This class basically offers two things:
- Dynamically creating widgets from TQt
Designer user interface description files.
You can do this using the static function TQWidgetFactory::create().
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 TQObject::child() and TQObject::queryList() to access child
widgets of this returned widget.
- Adding additional widget factories to be able to create custom
widgets. See createWidget() for details.
This class is not included in the TQt library itself. To use it you
must link against libtqui.so (Unix) or tqui.lib (Windows), which is
built into INSTALL/lib if you built TQt Designer (INSTALL is
the directory where TQt is installed ).
If you create a TQMainWindow using a TQWidgetFactory, be aware that
it already has a central widget. Therefore, you need to delete this
one before setting another one.
See the "Creating Dynamic Dialogs from .ui Files" section of the TQt Designer manual for an example. See
also the TQWidgetPlugin class and the Plugins documentation.
Member Function Documentation
TQWidgetFactory::TQWidgetFactory ()
Constructs a TQWidgetFactory.
TQWidgetFactory::~TQWidgetFactory () [virtual]
Destructor.
void TQWidgetFactory::addWidgetFactory ( TQWidgetFactory * factory ) [static]
Installs a widget factory factory, which normally contains
additional widgets that can then be created using a TQWidgetFactory.
See createWidget() for further details.
TQWidget * TQWidgetFactory::create ( const TQString & uiFile, TQObject * connector = 0, TQWidget * parent = 0, const char * name = 0 ) [static]
Loads the TQt Designer user interface description file uiFile
and returns the top-level widget in that description. parent and
name are passed to the constructor of the top-level widget.
This function also performs signal and slot connections, tab
ordering, etc., as described in the .ui file. In TQt Designer 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 TQObject, which implements all these slots. Then pass an
instance of the object as connector to this function. If you do
this, the connections to the custom slots will be done using the connector as slot.
If something fails, 0 is returned.
The ownership of the returned widget is passed to the caller.
TQWidget * TQWidgetFactory::create ( TQIODevice * dev, TQObject * connector = 0, TQWidget * parent = 0, const char * name = 0 ) [static]
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
Loads the user interface description from device dev.
TQWidget * TQWidgetFactory::createWidget ( const TQString & className, TQWidget * parent, const char * name ) const [virtual]
Creates a widget of the type className passing parent and name to its constructor.
If className 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 addWidgetFactory()). If the widget
cannot be created by any of these means, 0 is returned.
If you have a custom widget, and want it to be created using the
widget factory, there are two approaches you can use:
- Write a widget plugin. This allows you to use the widget in
TQt Designer and in this TQWidgetFactory. See the widget plugin
documentation for further details. (See the "Creating Custom
Widgets with Plugins" section of the TQt
Designer manual for an example.
- Subclass TQWidgetFactory. Then reimplement this function to
create and return an instance of your custom widget if className 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:
TQWidgetFactory::addWidgetFactory( new MyWidgetFactory );
where MyWidgetFactory is your TQWidgetFactory subclass.
void TQWidgetFactory::loadImages ( const TQString & dir ) [static]
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 TQMimeSourceFactory for the pixmaps. Either add it there
manually, or call this function and specify the directory where
the images can be found, as dir. This is normally the
directory called images in the project's directory.
bool TQWidgetFactory::supportsWidget ( const TQString & widget ) [static]
Returns TRUE if the widget factory can create the specified widget;
otherwise returns FALSE.
TQStringList TQWidgetFactory::widgets () [static]
Returns the names of the widgets this factory can create.
This file is part of the TQt toolkit.
Copyright © 1995-2007
Trolltech. All Rights Reserved.