Qt自定义控件开发与使用

标签: Qt 自定义控件
5人阅读 评论(0) 收藏 举报
分类:

1.开发环境

Qt版本:Qt 4.8.7
编译器:MinGw
系统:Windows

2.创建Qt4自定义控件

创建一个Qt自定义控件工程。

这里写图片描述

工程名为Custom。

这里写图片描述

控件类取名Custom。

这里写图片描述

然后完成创建。

3.包含头文件与宏

此时编译出来Release版本的自定义控件放进Designer目录下仅能在Designer中拖动,在使用该控件的工程中编译将会报错,所以需要在该控件编译前在该控件类的头文件中包含指定的头文件与宏。

在custom.h中包含头文件QtDesigner/QDesignerExportWidget。

#include <QtDesigner/QDesignerExportWidget>

在class与类名Custom之间添加宏。

QDESIGNER_WIDGET_EXPORT

这里写图片描述

4.编写自定义控件

这里测试用的Custom为了与Qt控件在外观上区别开,加上一段qss就好。

这里写图片描述

当然Custom继承自QWidget类,为了使qss有效,会重写一下paintEvent事件函数。

void Custom::paintEvent(QPaintEvent *)
{
    QStyleOption styleOpt;
    styleOpt.init(this);
    QPainter painter(this);
    style()->drawPrimitive(QStyle::PE_Widget, &styleOpt, &painter, this);
}

5.编译

编写好自定义控件类后,就需要编译Release版本了。

编译好Release版本后,在目标目录中找到customplugin.dll和libcustomplugin.a(vs编译为.lib)并将其拷贝到Qt安装目录下的plugins\designer中。

这里写图片描述

6.Designer

打开Designer,就可以在“自定义窗口部件”一栏下看到刚才编写的自定义控件Custom。

这里写图片描述

拖动Custom到Designer的窗口中,就可以看到效果。

这里写图片描述

7.使用自定义控件

在Qt Creator中新建一个应用工程CustomWidget。

在CustomWidget工程目录下新建include和lib两个目录。

这里写图片描述

讲自定义控件Custom的头文件custom.h拷贝到include目录下,讲库libcustomplugin.a拷贝到lib目录下。

注意:此时因为使用的自定义控件是Release版本的,所以当前应用工程也编译Release版本,如果当前应用工程需要Run的是Debug版本,则链接的自定义控件类库也需要时Debug版本。

在CustomWidget.pro工程文件中包含头文件与库。

INCLUDEPATH += $$PWD/include
LIBS += $$PWD/lib/libcustomplugin.a

执行一次qmake,在生成的目标目录下,将customplugin.dll拷贝到程序运行目录下。

使用Designer编辑.ui文件。(是加载有自定义控件Custom的Qt Designer)

在Designer中使用自定义控件Custom。

这里写图片描述

编译应用工程CustomWidget成功后,然后运行就OK了。

这里写图片描述

查看评论

自定义控件——完全自定义控件

-
  • 1970年01月01日 08:00

Qt自定义控件的开发和使用

无UI和有UI的Qt自定义控件的开发和使用 qt5.4和vs2010
  • llfwdd
  • llfwdd
  • 2015-03-30 16:24:33
  • 918

学习记录-Qt编写自定义控件

自定义一个带表格的窗口控件。很多时候,Qt自带的基本控件满足不了我们的需求,但是可以使用Qt的基本控件构造我们所需的控件。以下是我掌握的方法,记录一下。 需求是:一个自定义的控件上,能动态的添加和删...
  • u013399898
  • u013399898
  • 2016-09-27 22:23:10
  • 682

用qss自定义控件

Qt自带的一些东西,比如,按钮,表格,编辑框,提示框等,不是很美观,这时候我们就需要自定义控件了。 新建一个工程,并用设计器拖出一个...
  • qq_35001989
  • qq_35001989
  • 2017-09-18 19:33:13
  • 390

Qt5开发自定义控件中遇到的问题

由于Qt可以开发自定义控件,能够设计出更漂亮的UI,所以打算学习开发自己的控件,但学习过程中遇到很多问题,经历了各种挫折终于了解了定义控件的开发过程。 我的开发环境:qt-msvc2015-5.7....
  • u011650383
  • u011650383
  • 2017-03-27 19:17:38
  • 1801

编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件

在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等。虽然Qt Designer里的控件可以满足我们大部分的...
  • giselite
  • giselite
  • 2013-10-11 19:26:16
  • 42352

编写Qt Designer自定义控件(四)——使用自定义控件

接上文:编写Qt Designer自定义控件(二)——给自定义控件添加属性         控件编写完毕以后,把生成的dll和lib文件一起拷贝到Qt安装目录下的插件目录里,比如我安装在D盘里的Qt...
  • giselite
  • giselite
  • 2013-10-11 19:47:38
  • 13986

Qt编写自定义控件插件路过的坑及注意事项

在一日一控件的口号下,终于写好了五十几个自定义控件,包括各种仪表盘,各种温度计,各种进度条,各种按钮等,具体可参见(http://www.cnblogs.com/feiyangqingyun/p/61...
  • feiyangqingyun
  • feiyangqingyun
  • 2016-12-15 11:05:56
  • 1964

QT5自定义控件

自定义控件有两种方法,升级法和插件法 升级法: 继承一个现有的控件类,并重写一些虚函数以实现自定义的功能。在QtDesigner中,新建一个基类控件,在控件空白处右键菜单中选择Promoted W...
  • u013726776
  • u013726776
  • 2015-12-08 17:12:50
  • 949

Qt自定义控件的创建与初步使用

本篇博客的目的是简单介绍:创建一个用QLabel类来显示图片的自定义控件的编写。在写自定义控件的过程中遇到了很多的难题,但都慢慢解决了,本人对Qt自定义控件的认识还不深刻,做的不对的地方,还请大家指出...
  • qq_15094525
  • qq_15094525
  • 2017-01-06 13:40:51
  • 1492
    个人资料
    等级:
    访问量: 1148
    积分: 146
    排名: 113万+