【翻译】Qt Designer自定义控件简介

原文链接:Using Custom Widgets with Qt Widgets Designer

Qt Designer 可以通过其可扩展的插件机制显示自定义控件,允许用户和第三方扩展定义控件的范围。或者,也可以使用现有的控件作为提供类似 API 的控件类的占位符。

处理自定义控件

尽管 Qt Designer支持所有标准的 Qt 控件,但由于以下原因,一些特定的控件可能不能作为标准使用:

  • 用户界面处于设计模式下,自定义控件可能不可用。
  • 针对特定平台开发的自定义控件,设计器可能需要在特定平台下运行才能为终端用户开发UI界面。
  • 自定义控件的源代码不可用,或者由于非技术原因(比如license限定)也会造成一些自定义控件无法使用。

在上述情况下,依然可以达到使用自定义控件的目的。为了实现这一点,我们可以使用 Qt Designer 的提升窗口部件功能。

除此之外,若自定义控件的源代码可用,我们可以调整自定义控件以便在Qt Designer中使用。

提升窗口部件(控件)

如果必须设计某些表单,且某些自定义控件对设计器不可用,我们可以用类似的控件来替代缺失的控件。例如,我们可以用 QPushButton 的实例表示自定义按钮类 MyPushButton 的实例,并将这些实例提升到 MyPushButton,以便 uic 为这个缺失的类生成合适的代码。

当选择一个控件作为占位符时,将缺失控件的 API 与标准 Qt 控件的 API 进行比较是很有用的。基于标准控件子类的专用控件,占位符的选择基于自定义控件的基类; 例如,QSlider 可能用于专用的 QSlider 子类。

对于不与标准 Qt 控件兼容 API 的专用控件,可以考虑调整为一个自定义控件,以便在 Qt Designer中使用。如果无论如何也不可行,那么 QWidget 将是所有控件的首选。

要添加占位符,请选择一个合适的基类,然后从控件的右键菜单中选择提升为...。在对话框的下半部分输入提升的类名称头文件后,点击 添加。占位符类现在将与基类一起出现在上面的列表中。单击"提升"按钮以接受此选项。


现在,当表单中存在基类的控件,占位符类将出现在提升为子菜单中,从而可方便地将对象升级到该类。

通过从控件的右键菜单中选择取消***的提升,可以将提升的控件还原为其基类。

用户自定义控件

自定义控件可以整合到 Qt Designer中使用,使设计器在应用程序中使用真实控件而非占位符控件来配置用户界面。创建自定义控件插件的过程详见本手册的"为 Qt Designer创建自定义控件"一文。

要使用以这种方式创建的插件,需确保该插件位于 Qt Designer 可检索到的插件路径中。通常,存储在 Qt根目录/plugins/design 路径下的插件将在 Qt Designer 启动时加载。关于构建和安装插件的更多信息可以在这里找到。有关创建插件的信息,您还可以参考 Plugins HOWTO 文档。

扩展阅读

Qt Designer 最新中文手册文档(Qt6)

相关推荐
xcyxiner17 小时前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner1 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner2 天前
DicomViewer (添加模型类)3
qt
xcyxiner2 天前
DicomViewer (目录调整) 2
qt
xcyxiner3 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR0064 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术4 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园4 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob4 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享4 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm