【翻译】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)

相关推荐
程高兴23 分钟前
中性点不接地系统单相接地故障Matlab仿真
开发语言·matlab
AI很强28 分钟前
matlab常见的配图代码实现1
开发语言·算法·matlab
鲤籽鲲1 小时前
C# Enumerable类 之 数据排序
开发语言·c#·c# 知识捡漏
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧1 小时前
C语言_数据结构总结6:链式栈
c语言·开发语言·数据结构·算法·链表·visualstudio·visual studio
IT猿手1 小时前
2025最新群智能优化算法:云漂移优化(Cloud Drift Optimization,CDO)算法求解23个经典函数测试集,MATLAB
开发语言·数据库·算法·数学建模·matlab·机器人
至暗时刻darkest1 小时前
go mod文件 项目版本管理
开发语言·后端·golang
sakoba1 小时前
spring IOC(实现原理)
java·开发语言
MZWeiei2 小时前
Scala:在哪里写类的属性?类的属性必须私有吗?类的必须初始化吗?
开发语言·scala
闯闯桑2 小时前
Scala 中的访问修饰符
大数据·开发语言·scala
我不是代码教父2 小时前
[原创](Modern C++)现代C++的关键性概念: 非常独特的std::sentinel_for概念(哨兵概念)
开发语言·c++·sentinel