1.需要创建一个合适的.pro文件

2.创建一个继承QDesignerCustomWidgetInterface的类,描述控件的一些属性.

函数 描述和返回值
name() 指定控件的名称
group() 控件所属的类别
toolTip() 关于控件的简短描述
whatsThis() 关于控件的详细描述
includeFile() 控件使用时必须包含的头文件
icon() 控件在QTDesigner控件框中显示的图标
isContainer() 如果可以包含子控件为真,否则为假
createWidget() 创建控件指针,不过属性不可获得,除非load()加载完成
domXml() 描述控件的属性
codeTemplate() 保留函数

另外还有两个虚函数需要被重新实现.

initialize() 设置自定义控件的扩展,自定义容器和菜单需要设置这个函数
isInitialized() 如果控件被初始化,返回真,否则返回假

3.domXml()函数

domXml()会返回一个UI文件,这个文件被Qt用来创建一个自定义的控件.并包含了控件的相关参数

Qt4.4版本之后,Qt Designer的控件盒子允许使用完整的UI文件描述一个自定义控件.UI文件使用<ui>标签加载,特别是<ui>标签允许添加<customwidget>元素来包含自定义控件的额外信息.当然,如果没有额外信息需要添加,使用标签<widget>已经足够. 

如果自定义控件没有提供合适的大小尺寸.必须指定通过类函数domXml()返回的UI数据流中的geometry几何默认大小

关于domXml()函数另一种情况是,这个函数返回一个空的字符串,这个控件不会再Qt Designer显示框中显示出来,但仍然可以被其他窗口控件所使用,这种情况一般适用于隐藏的窗口,

一个完整的自定义控件的设置:

<ui language="c++"> displayname="MyWidget">
  <widget class="widgets::MyWidget" name="mywidget"/>
  <customwidgets>
      <customwidget>
          <class>widgets::MyWidget</class>
          <addpagemethod>addPage</addpagemethod>
          <propertyspecifications>
              <stringpropertyspecification name="fileName" notr="true" type="singleline"/>
              <stringpropertyspecification name="text" type="richtext"/>
              <tooltip name="text">Explanatory text to be shown in Property Editor</tooltip>
          </propertyspecifications>
      </customwidget>
  </customwidgets>
</ui>
一个完整的自定义控件形式

相关文章:

  • 2022-12-23
  • 2021-04-25
  • 2021-11-27
  • 2021-12-23
  • 2022-02-07
  • 2021-08-24
  • 2021-07-08
  • 2022-12-23
猜你喜欢
  • 2021-12-26
  • 2021-10-22
  • 2021-09-29
  • 2021-11-03
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案