【Qt开发笔记】Qt自定义控件开发与使用,自定义控件实现容器与控件内布局

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了。

这里写图片描述

8.Designer中实现容器与控件内布局

在Qt Designer中,QWidget以及QGroupBox等预定义控件都可以当做容器来存放其他控件并实现快速布局,但是在自定义控件继承了其基类后发现无法当做容器来存放其他控件并实现快速布局,这个时候就需要修改重写QDesignerCustomWidgetInterface类中的一个函数的实现。

找到Qt自定义控件中xxxplugin.h,其中有一个重写QDesignerCustomWidgetInterface类的函数isContainer,即是否为一个容器。

bool isContainer() const;

跳转到xxxplugin.cpp中isContainer函数的实现。

bool XXXPlugin::isContainer() const
{
    return false;
}

将返回值修改为true。

bool XXXPlugin::isContainer() const
{
    return true;
}

然后重新编译并在Qt Designer中使用,即可发现该自定义控件可以作为一个容器存放其他控件并实现控件内布局。

  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
你可以按照以下步骤来开发自定义控件: 1. 创建一个新的 Qt 项目:打开 Qt Creator,选择 "File" -> "New File or Project",选择 "Qt Widgets Application",然后点击 "Choose"。为你的项目选择一个合适的名称,并设置存储位置。 2. 添加一个新的自定义控件类:在项目资源管理器中,右击你的项目,选择 "Add New" -> "C++ Class"。在弹出的对话框中,选择 "Qt" 类型,并选择 "Qt Widget" 作为基类。为你的自定义控件选择一个合适的名称,然后点击 "Next"。最后点击 "Finish" 完成创建。 3. 实现自定义控件的功能:打开你刚创建的自定义控件类的头文件(.h 文件),在类的声明中添加你需要的成员变量和函数。然后打开实现文件(.cpp 文件),实现这些函数的功能。 4. 设计自定义控件的外观:打开 Qt Designer,将你的自定义控件拖拽到主窗口中。然后使用 Qt Designer 的工具栏来设计和布局你的控件。你可以设置控件的大小、位置、背景色等属性。 5. 在主窗口中使用自定义控件:打开主窗口类的头文件(.h 文件),包含你的自定义控件的头文件。然后在类的声明中添加一个成员变量来保存自定义控件的实例。在主窗口的构造函数中创建自定义控件的实例,并将其添加到主窗口的布局中。 6. 使用和测试自定义控件:在主窗口类的实现文件(.cpp 文件)中,使用你的自定义控件的成员变量来访问和操作控件。你可以设置控件的属性、连接信号和槽函数等。然后编译和运行你的项目,测试自定义控件的功能和外观是否符合预期。 这是一个简单的自定义控件开发教程的概述,你可以根据具体需求进行进一步的学习和扩展。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值