admin管理员组

文章数量:1657046

Promote to 功能的官方说明:https://doc.qt.io/archives/qt-4.8/designer-using-custom-widgets.html

Qt desiner支持了所有的标准widget的可视化操作,但是一些专门的widget不能像标准widget一样进行可视化操作,因为:

  • 在设计用户界面时,自定义widget可能不可用。
  • 自定义widget可能是平台依赖的,设计师可能会在与最终用户不同的平台上开发用户界面。
  • 自定义widget的源代码不可用,或者用户界面设计人员由于非技术原因无法使用该widget。

但qt desiner中仍可以使用自定义widget来设计应用,即通过qt desiner中的 widget promotion 功能来实现这一点。
如果自定义widget的源代码可用的话,我们可以用qt desiner调整这些自定义widget。

Promoting Widgets

如果一些样式是必须设计的,但是其中用到的自定义部件在qt desiner里没有可视化图形,我们可以用与自定义部件相似的部件来替代缺少的部件。

例如,我们可以用QPushButton的实例来表示一个自定义的按钮类MyPushButton的实例,并将这些实例 promote 到MyPushButton,这样uic就会为这个缺失的类生成合适的代码。

当选择一个标准widget作为替代自定义widget的占位符的时候,应该比较一下自定义widget和标准widget两者之间的API,对于那些继承于标准类型widget的自定义widget来说,首选的占位符是它们的基类。比如说一个QSlider类widget可以用于替代一个继承于QSlider类的自定义widget类。

如果说你的自定义widget和哪个标准widget都不共享API,你可以考虑调整一下你的自定义widget来让它和某个标准的widget共享API。如果实在没办法的话,你可以选择QWidget来替代你的自定义widget,因为QWidget是所有类的基类。

使用promote功能的具体操作是首先选择一个合适的标准widget拖到窗口中,然后右键点击该widget,选择“promote to”。在对话框下半部分输入类名和头文件名后,选择添加。占位类将与基类一起出现在上层列表中,最后单击 "promote"按钮即可。

当你添加了一个自定义widget类作为某个标准widget的promote目标后,在你下次右键点开“promote to”选项时,该自定义类会自动在菜单里显示出来,方便其他标准widget来promote。

如果你撤销你对标准widget的promote操作,只需右键点击该widget,选择“demote to”即可。

本文标签: 功能笔记QTCreatorPromote