QT的QDesignerContainerExtension類的使用
阿新 • • 發佈:2020-12-08
技術標籤:QT相關
詳細說明
QDesignerContainerExtension類允許您將頁面新增到Qt Designer工作空間中的自定義多頁容器中。
QDesignerContainerExtension提供了用於建立自定義容器擴充套件的介面。 容器擴充套件包含Qt Designer管理多頁容器外掛所需的功能集合和容器頁面列表。
警告:通常,這不是容器外掛的擴充套件,僅是自定義多頁容器。
要建立容器擴充套件,擴充套件類必須同時繼承QObject和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;
};
QExtensionFactory類提供了一個標準擴充套件工廠,也可以用作自定義擴充套件工廠的介面。 您可以建立一個新的QExtensionFactory並重新實現QExtensionFactory :: createExtension()函式。 例如:
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;
}
或者,您可以使用現有工廠,擴充套件QExtensionFactory :: createExtension()函式以使工廠也能夠建立容器擴充套件。 例如:
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;
}