Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QDesignerTaskMenuExtension Class Reference
[QtDesigner module]

该QDesignerTaskMenuExtension类允许您自定义菜单项添加到Qt Designer中的任务菜单。More...

通过继承QPyDesignerTaskMenuExtension

Methods


Detailed Description

该QDesignerTaskMenuExtension类允许您自定义菜单项添加到Qt Designer中的任务菜单。

QDesignerTaskMenuExtension提供了用于创建自定义任务菜单扩展的接口。它通常用于创建特定于一个插件中任务的菜单项Qt Designer

Qt Designer使用QDesignerTaskMenuExtension养活它的任务菜单。当被要求的任务菜单,Qt Designer将查询所选部件的任务菜单扩展。

任务菜单扩展是QActions的集合。当选择该插件具有指定扩展名的动作出现在任务菜单中的条目。上图显示自定义Edit State...这似乎除了动作Qt Designer的默认任务菜单项:CutCopyPaste等等

要创建一个自定义任务菜单扩展,你的扩展类必须继承自两个QObject和QDesignerTaskMenuExtension 。例如:

 class MyTaskMenuExtension : public QObject,
         public QDesignerTaskMenuExtension
 {
     Q_OBJECT
     Q_INTERFACES(QDesignerTaskMenuExtension)

 public:
     MyTaskMenuExtension(MyCustomWidget *widget, QObject *parent);

     QAction *preferredEditAction() const;
     QList<QAction *> taskActions() const;

 private slots:
     void mySlot();

 private:
     MyCustomWidget *widget;
     QAction *myAction;
 };

由于我们正在实现一个接口,我们必须确保它是使用由已知的元对象系统的Q_INTERFACES()宏。这使Qt Designer使用qobject_cast( )函数用什么来查询所支持的接口,但一QObject指针。

你必须重新实现taskActions( )函数返回的行动,将被列入名单Qt Designer任务菜单。或者,您可以重新实现preferredEditAction( )函数选择你的插件,并按下时设置被调用的行动F2。优选的编辑动作一定要返回的动作之一taskActions( ),并且如果它没有被定义时,按F2键将简单地被忽略。

In Qt Designer,则不会创建扩展,直到你需要它们。任务菜单扩展名,例如,当您单击鼠标右键,在一个小部件创建Qt Designer的工作空间。出于这个原因,你还必须构建一个扩展的工厂,无论是使用QExtensionFactory或者一个子类,并用它注册Qt Designerextension manager

当一个任务菜单扩展是必需的,Qt Designerextension manager将通过其所有已注册的工厂运行要求QExtensionFactory.createExtension()对每个直到找到一个能够创建一个任务菜单扩展所选部件。这家工厂将使这个扩展的实例。

有扩展的四个可用的类型Qt DesignerQDesignerContainerExtensionQDesignerMemberSheetExtensionQDesignerPropertySheetExtension和QDesignerTaskMenuExtension 。Qt Designer的行为是相同的同一个容器中,构件表,属性表或任务菜单所需的分机是否相关联。

QExtensionFactory类提供了一个标准的扩展工厂,并且也可以用作用于定义扩展工厂的接口。您可以创建一个新的QExtensionFactory并重新实现QExtensionFactory.createExtension()函数。例如:

 QObject *ANewExtensionFactory.createExtension(QObject *object,
         const QString &iid, QObject *parent) const
 {
     if (iid != Q_TYPEID(QDesignerTaskMenuExtension))
         return 0;

     if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object))
         return new MyTaskMenuExtension(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(QDesignerContainerExtension))) {
         return new MyContainerExtension(widget, parent);

     } else if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) {
         return new MyTaskMenuExtension(widget, parent);

     } else {
         return 0;
     }
 }

对于使用QDesignerTaskMenuExtension类的完整示例,请参见Task Menu Extension example。该示例显示了如何创建一个自定义的widget插件Qt Designer,以及如何使用QDesignerTaskMenuExtension类的自定义项添加到Qt Designer的任务菜单。


Method Documentation

QDesignerTaskMenuExtension.__init__ (self)

QDesignerTaskMenuExtension.__init__ (self, QDesignerTaskMenuExtension)

QAction QDesignerTaskMenuExtension.preferredEditAction (self)

返回具有指定扩展名选择一个插件并按下时调用的动作F2

动作一定要返回的动作之一taskActions( ) 。

list-of-QAction QDesignerTaskMenuExtension.taskActions (self)

这种方法是抽象的,应在任何子类中重新实现。

返回任务菜单扩展为一个动作列表将包含在Qt Designer的任务菜单当选择具有指定扩展名的插件。

此功能必须重新实现将动作添加到列表中。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5