QDesignerContainerExtension Class ReferenceThe QDesignerContainerExtension class allows you to add pages to a custom multi-page container in Qt Designer's workspace. Далее... #include <QDesignerContainerExtension>
Открытые функции
Подробное описаниеThe QDesignerContainerExtension class allows you to add pages to a custom multi-page container in Qt Designer's workspace. QDesignerContainerExtension provide an interface for creating custom container extensions. A container extension consists of a collection of functions that Qt Designer needs to manage a multi-page container plugin, and a list of the container's pages. Warning: This is not an extension for container plugins in general, only custom multi-page containers. To create a container extension, your extension class must inherit from both QObject and QDesignerContainerExtension. Например: class MyContainerExtension : public QObject, public QDesignerContainerExtension { Q_OBJECT Q_INTERFACES(QDesignerContainerExtension) public: MyContainerExtension(MyCustomWidget *widget, QObject *parent = 0); int count() const; QWidget *widget(int index) const; int currentIndex() const; void setCurrentIndex(int index); void addWidget(QWidget *widget); void insertWidget(int index, QWidget *widget); void remove(int index); private: MyCustomWidget *myWidget; }; Since we are implementing an interface, we must ensure that it's made known to the meta object system using the Q_INTERFACES() macro. This enables Qt Designer to use the qobject_cast() function to query for supported interfaces using nothing but a QObject pointer. You must reimplement several functions to enable Qt Designer to manage a custom multi-page container widget: Qt Designer uses count() to keep track of the number pages in your container, widget() to return the page at a given index in the list of the container's pages, and currentIndex() to return the list index of the selected page. Qt Designer uses the addWidget() function to add a given page to the container, expecting it to be appended to the list of pages, while it expects the insertWidget() function to add a given page to the container by inserting it at a given index. In Qt Designer the extensions are not created until they are required. For that reason you must also create a QExtensionFactory, i.e a class that is able to make an instance of your extension, and register it using Qt Designer's extension manager. When a container extension is required, Qt Designer's extension manager will run through all its registered factories calling QExtensionFactory::createExtension() for each until the first one that is able to create a container extension, is found. This factory will then create the extension for the plugin. There are four available types of extensions in Qt Designer: QDesignerContainerExtension , QDesignerMemberSheetExtension, QDesignerPropertySheetExtension and QDesignerTaskMenuExtension. Qt Designer's behavior is the same whether the requested extension is associated with a multi page container, a member sheet, a property sheet or a task menu. The QExtensionFactory class provides a standard extension factory, and can also be used as an interface for custom extension factories. You can either create a new QExtensionFactory and reimplement the QExtensionFactory::createExtension() function. Например: QObject *ANewExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerContainerExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*> (object)) return new MyContainerExtension(widget, parent); return 0; } Or you can use an existing factory, expanding the QExtensionFactory::createExtension() function to make the factory able to create a container extension as well. Например: QObject *AGeneralExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object); if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) { return new MyTaskMenuExtension(widget, parent); } else if (widget && (iid == Q_TYPEID(QDesignerContainerExtension))) { return new MyContainerExtension(widget, parent); } else { return 0; } } For a complete example using the QDesignerContainerExtension class, see the Container Extension example. The example shows how to create a custom multi-page plugin for Qt Designer. See also QExtensionFactory, QExtensionManager, and Creating Custom Widget Extensions. Описание функций-членовQDesignerContainerExtension::~QDesignerContainerExtension () [virtual]Destroys the extension. void QDesignerContainerExtension::addWidget ( QWidget * page ) [pure virtual]Adds the given page to the container by appending it to the extension's list of pages. See also insertWidget(), remove(), and widget(). int QDesignerContainerExtension::count () const [pure virtual]Returns the number of pages in the container. int QDesignerContainerExtension::currentIndex () const [pure virtual]Returns the index of the currently selected page in the container. See also setCurrentIndex(). void QDesignerContainerExtension::insertWidget ( int index, QWidget * page ) [pure virtual]Adds the given page to the container by inserting it at the given index in the extension's list of pages. See also addWidget(), remove(), and widget(). void QDesignerContainerExtension::remove ( int index ) [pure virtual]Removes the page at the given index from the extension's list of pages. Смотрите также addWidget() и insertWidget(). void QDesignerContainerExtension::setCurrentIndex ( int index ) [pure virtual]Sets the currently selected page in the container to be the page at the given index in the extension's list of pages. See also currentIndex(). QWidget * QDesignerContainerExtension::widget ( int index ) const [pure virtual]Returns the page at the given index in the extension's list of pages. Смотрите также addWidget() и insertWidget(). |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |