创建和使用组件Qt Widgets Designer
创建自定义 widget 插件
在为Qt Widgets Designer 实现自定义 widget 插件时,必须子类化QDesignerCustomWidgetInterface ,以便将自定义 widget 暴露给Qt Widgets Designer 。单个自定义 widget 插件是作为一个单独的库构建的。如果您想在同一库中包含多个自定义 widget 插件,则必须另外子类化QDesignerCustomWidgetCollectionInterface 。
要在Qt Widgets Designer 的工作区中为您的自定义 widget 插件提供预期的行为和功能,您可以子类化相关的扩展类:
QDesignerContainerExtension 类允许您在自定义多页面容器中添加页面。通过QDesignerTaskMenuExtension 类,您可以在Qt Widgets Designer 的任务菜单中添加自定义菜单条目。通过QDesignerMemberSheetExtension 类,您可以操作部件的成员函数,这些函数会在使用Qt Widgets Designer'编辑信号和插槽的模式配置连接时显示。最后,QDesignerPropertySheetExtension 类允许您操作部件的属性,这些属性会显示在Qt Widgets Designer 的属性编辑器中。
在Qt Widgets Designer 中,扩展在需要时才会创建。因此,在实现扩展时,您还必须子类化QExtensionFactory ,即创建一个可以创建扩展实例的类。此外,您还必须让Qt Widgets Designer 的扩展管理器注册您的工厂;扩展管理器在需要时控制扩展的构建,您可以通过QDesignerFormEditorInterface 和QExtensionManager 访问它。
有关使用扩展创建自定义 widget 插件的完整示例,请参阅任务菜单扩展或容器扩展示例。
检索Qt Widgets Designer 组件的访问权限
本节提到的类的目的是提供对Qt Widgets Designer 的组件、管理器和工作区的访问,它们并不打算被直接实例化。
Qt Widgets Designer 用户界面由多个组件组成。它有一个动作编辑器、一个属性编辑器、部件框和对象检查器,可以在工作区中查看。
Qt Widgets Designer 此外,还有一个在幕后工作的对象;它包含将 的所有组件整合为一个连贯的应用程序的逻辑。您可以使用 访问该对象,获取 组件的接口:Qt Widgets Designer QDesignerFormEditorInterface Qt Widgets Designer
- QDesignerActionEditorInterface
- QDesignerObjectInspectorInterface
- QDesignerPropertyEditorInterface
- QDesignerWidgetBoxInterface
此外,您还可以使用QDesignerFormEditorInterface 来检索Qt Widgets Designer 的扩展管理器 (QExtensionManager) 和窗体窗口管理器 (QDesignerFormWindowManagerInterface) 的接口。扩展管理器控制所需的扩展的构建,而窗体窗口管理器则控制出现在Qt Widgets Designer 工作区的窗体窗口。
一旦你拥有了Qt Widgets Designer 的窗体窗口管理器 (QDesignerFormWindowManagerInterface) 的接口,你就可以访问当前出现在Qt Widgets Designer 工作区的所有窗体窗口:QDesignerFormWindowInterface 类允许你查询和操作窗体窗口,它还提供了一个窗体窗口光标的接口。QDesignerFormWindowCursorInterface 是一个方便的类,允许你查询和修改给定窗体窗口的部件选择,以及修改所有窗体部件的属性。
在运行时创建用户界面
QtDesigner
模块包含QFormBuilder 类,该类提供了一种在运行时根据Qt Widgets Designer 创建的用户界面文件动态创建用户界面的机制。该类通常用于嵌入Qt Widgets Designer 的自定义组件和应用程序。需要在运行时动态生成用户界面的独立应用程序则使用QtUiTools 模块中的QUiLoader 类。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.