`
tomhibolu
  • 浏览: 1431036 次
文章分类
社区版块
存档分类
最新评论

Qt Designer中自定义控件的使用(提升法与插件法)

 
阅读更多
  • 准备乱写一点Qt自定义Widget在Designer中的使用。可是又不想重复提升法(promotion)及插件法基本用法,因为Manual中Using Custom Widgets with Qt Designer已经说的很清楚了。

使用designer

Qt用户可能会经历这样的3个阶段:

  • 刚接触Qt,在designer中拖拖拽拽,一个界面就形成了。相当方便(不过不少人网友初次接触时对layout相当不适应)
  • 比较熟悉之后,感觉designer是个累赘,比如:
    • 感觉在designer中拖拽控件,完全没有在代码中写的易于控制。尽管都是用QLayout
    • 接触到自定义控件后,发现在designer中使用自定义控件比较麻烦。
    • 就是不太喜欢desinger生成.ui文件,然后uic生成 ui_xxx.h文件的这套东西。
    • ...
  • 再过一段时间,发觉,designer确实很方便。而且通过提升法在designer中使用自定义控件是非常简单的。而且前一阶段的问题其实也都不算什么问题。

自定义控件

考虑下列情况:

  • 从QWidget派生了一个led灯控件:HLed
  • 从QSpinBox派生了一个进制可变的:HBaseSpinBox
  • 从QLabel派生了一个发射但双击信号的:HLabel
  • ...

恩,没什么特别的哈

  • 如果在代码中使用的话,包含头文件直接用即可。和标准控件没有任何区别。
  • 如果在designer中使用,分别拖放QWidget、QSpinBox、QLabel,然后右键点击提升...

提升 vs 插件

两种方法有什么区别么?什么区别?

先考虑我们是如何使用designer的(此处不考虑.ui动态加载):

  • 打开designer,拖放控件,应用布局,设置属性
  • 保存,生成 XXX.ui 文件
  • 调用 uic 将 XXX.ui 预处理成 ui_XXX.h
  • 调用C++编译器编译这些*.h、*.cpp

注意,如果你写了插件,那么它只在第一步中有用。有什么用:

  • 插件包含类名name()已经头文件includeFile()信息。(对比,用提升法时,手动输入这两项信息)

  • 插件包含控件的实现
    • 所以在designer中可以看到控件的真实样子。(对比,提升法时,需要一个替身,一般就是其基类)
    • 可以感知其有哪些属性,并显示在属性编辑器中。(对比,你可以直接在属性编辑器中添加属性,又一个大大的加号,不是么?)
  • ...

归根到底,插件法 和 提升法想比,其实没有本质的区别。二者都是要生成一个.ui文件,而这个文件的使用,和插件一点关系都没有。

还有点什么...

前面的东西都似乎没什么意思,因为Manual中介绍很清楚,只要用过提升法和插件法就能得出上面这些的东西。

可是,还有有一点可能稍微有点意思,考虑:

  • 我从QStackedWidget派生类了一个HDoubleSpinBox。可是在designer中,我想看到一个QDoubleSpinBox,而不是一个stacked widget.
  • 我从QLabel派生了一个HLabelButton。可是在designer中,我想看到一个QToolButton,而不是一个 QLabel
  • ...

插件法能不能做到?

能,只要让插件的createWidget()创建一个QDoubleSpinBox或者QToolButton

提升法能不能做到?

能,注意到提升时我们我们需要选择一个基类。而这个基类,我们可以随便选,选择哪一个,哪一个就会作为替身显示出来。

(注意:本文中忽略了很多细节,希望不会造成误导...)


分享到:
评论

相关推荐

    Linux QtDesigner自定义Button控件

    本教程将详细介绍如何在Qt4中使用Qt Designer实现自定义Button控件的过程。 首先,要创建自定义的Button控件,你需要了解Qt的插件系统。Qt Designer通过插件机制加载自定义控件,使得它们可以在设计界面中显示和...

    Qt Designer中添加自定义插件示例源码

    "qtdesigner自定义插件.JPG"可能是一张截图,展示了自定义插件在Qt Designer中的实际效果。 总的来说,这个示例源码是一个很好的学习资源,帮助开发者深入理解Qt Designer的插件机制,从而能够根据项目需求创建和...

    Qt下自定义控件的制作与使用

    - **加载控件**:在Qt Designer中加载自定义控件插件,以便在设计界面时使用。 ##### 2. 在Qt Designer中使用自定义控件 - **加载控件**:在Qt Designer中加载自定义控件插件。 - **设计界面**:在设计界面时,...

    QT 自定义控件编译与使用

    - **在Qt Designer中使用**:为了让自定义控件可以在Qt Designer设计界面中可视化编辑,需要创建一个插件。创建一个Designer插件类,继承自QDesignerWidgetFactory或QDesignerCustomWidgetInterface,并实现其中的...

    QT自定义控件开发步骤

    - 首先,通过Qt Creator打开“新建项目”向导,选择“Qt Designer自定义控件”模板,按照向导指示创建项目。在这个例子中,项目名为“LogLatEdit”。 2. **编译控件工程** - 创建项目后,切换到Release模式,编译...

    Qt5(VS2015+Qt5.10.0)下实现一个Dll文件中包含多个自定义控件

    本篇将详细讲解如何在VS2015与Qt5.10.0环境下,通过参考Qwt6.1.3的源码,实现在一个DLL文件中包含多个自定义控件,并在Qt Designer中集成和使用。 首先,我们需要理解Qt的插件系统。Qt的控件插件允许我们在运行时...

    QML自定义组件显示在QT Designer库面板中的方法

    标题《QML自定义组件显示在QT Designer库面板中的方法》涉及的知识点非常具体,主要分为以下几个方面: 首先,标题表明了文章将介绍如何将自定义的QML组件集成到QT Designer的库面板中。这种集成有利于提高开发效率...

    Qt之自定义控件(开关按钮)自记

    这个插件允许你在Qt Designer中直接拖放自定义控件。在`switchbuttonplugin.h`中,定义一个派生自`QDesignerCustomWidgetInterface`的类,如`SwitchButtonPlugin`,并实现必要的接口方法。`switchbuttonplugin.cpp`...

    QT designer 中文插件

    确保插件与你的QT版本和操作系统兼容,因为不同的QT版本和平台可能需要不同的插件。 2. 安装插件通常涉及将插件文件复制到QT安装目录下的相应插件子目录,如`plugins/designer`。如果你不确定具体路径,可以在QT...

    quc自定义控件(超过60个)设计师插件

    "quc自定义控件(超过60个)设计师插件" 这个标题指的是一款专门针对Qt开发环境的工具,它提供了超过60个自定义的用户界面控件,并且集成了一个设计工具,使得开发者能够更加便捷地在Qt应用中使用这些定制的控件。...

    Qt Designer 的插件的编写

    Qt Designer 是一个强大的图形用户界面(GUI)设计工具,它允许开发者通过拖放方式构建UI元素,...通过理解和实践`AXGLWidgetPlugin`这样的示例,你可以熟练掌握创建自定义控件和插件的技术,提升你的Qt应用开发能力。

    Qt精美的常用自定义控件_qt 5.9.8_msvc2015_x32

    《Qt 5.9.8中的精美自定义控件与MSVC2015_x32编译环境详解》 Qt作为一款强大的跨平台应用程序开发框架,被广泛应用于图形用户界面设计。在Qt 5.9.8版本中,开发者可以利用其丰富的API和灵活的扩展性,创建出极具...

    Qt自定义插件设计与加载过程

    加载自定义控件需要将 release 版的 dll 文件拷贝到 Qt Designer 的插件目录下,如 D:\Qt\4.8.4\plugins\designer,这样自定义控件即可在 Qt Designer 中使用;拷贝 dll 文件到 Qt Creator 的集成 Qt Designer 的...

    Designer自定义控件插件脚本化加载

    通过脚本化的方式处理Qt 自定义控件插件加载到Designer设计器, 每次使用Qt进行编写好自定义控件后,还需要编写Desginer设计器使用的插件。才能够提供给Designer设计器使用,过程比较繁琐,工作量也比较大,不够灵活...

    qt自定义分页组件源代码

    `zpagewidget.ui`和`pagecontroltest.ui`是使用QT的可视化布局工具(如Qt Designer)生成的UI文件,它们描述了用户界面的布局和控件。`zpagewidget.ui`包含了`ZPageWidget`的界面设计,如按钮、标签、滑块等元素的...

    Qt自定义动态折线图绘制

    在本文中,我们将深入探讨如何使用Qt框架自定义动态折线图,并将其集成到Qt Designer作为插件。Qt是一个跨平台的应用程序开发框架,广泛应用于图形用户界面(GUI)的开发,而自定义图形组件是Qt GUI编程中的一个重要...

    多彩仪表Qt自定义控件.zip

    这两文件涉及到QtDesigner插件,允许用户在设计界面中直接使用自定义控件。`gaugecolorplugin.cpp`实现了Qt插件接口,使得仪表控件可以在QtDesigner中被识别和配置。`gaugecolorplugin.h`则定义了相关的插件类。 综...

    自己总结 qt4自定义控件的创建方法

    完成基础文件的编写之后,我们需要将自定义控件集成到Qt Designer中,以便能够通过设计界面进行布局设计。具体步骤如下: 1. **删除main.cpp**:为了确保控件能够被正确集成到Qt Designer中,首先需要删除`main.cpp...

    qt自绘仪表盘控件项目demo完整源码

    然而搞明白QT自定义控件的绘图后,自定义绘图这种,实现是最简单最轻量级的,且定制度高,想要什么效果就可以自己绘制个。 所谓一通百通,有了以下示例的参考实现,任意实现一个类似的仪表盘,也是很简单的事情。 ...

    Qt曲线图控件,简单易用

    在Qt框架中,曲线图控件是开发图形用户界面(GUI)时不可或缺的一部分,尤其在数据分析、可视化或者科学计算的应用中。"Qt曲线图控件,简单易用"这一标题暗示了我们将在讨论一个便于开发者集成和操作的图表库,它...

Global site tag (gtag.js) - Google Analytics