侧边栏壁纸
  • 累计撰写 134 篇文章
  • 累计创建 62 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Qt自定义控件的开发流程

码峰
2022-12-06 / 0 评论 / 0 点赞 / 428 阅读 / 1,071 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-12-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

Qt自定义控件是界面开发中经常使用到的,在Qt开发中,一方面可以直接在工程中自己定义一些控件给当前够工程使用,另一方面,也可以专门制作一些控件库给其他项目使用,下面就分别来介绍这两种Qt自定义控件的方式。

项目中自定义控件创建步骤

项目中自定义控件,主要是方便在当前项目中,将界面的功能通过分离控件的方式分模块进行开发。
先创建一个QtWidget项目,然后在项目中,新建文件->选择“Qt 设计师界面类”
image
下一步,Template选择“Widget”,如下图:
image-1670382975543
下一步,填写控件的名称,这里取名为“MyControl”。
image-1670383010350
创建完成以后,会直接来到UI设计界面。我们往里面拖一个QLabel和QLineEdit,然后把控件调整到你想要的大小:
image-1670383030158
然后,在项目的主界面或者需要使用自定义控件的界面中,拖入一个Container中的Widget到界面,然后右键,点击“提升为”。
image-1670383046255
填写类名“MyControll”,单击“添加”按钮,如下图:
image-1670383067225
image-1670383071075
编译并运行项目,就可以在主界面中看到自定义的控件的显示了,如下图:
image-1670383319190

我们想在QLineEdit控件有输入时做一些操作,那么我们就需要在自定义控件的构造函数中连接信号槽。如下所示:

#include "mycontrol.h"
#include "ui_mycontrol.h"

MyControl::MyControl(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyControl)
{
    ui->setupUi(this);
    connect(ui->lineEdit, SIGNAL(textChanged(const QString &)),this, SLOT(customSlot()));
}

MyControl::~MyControl()
{
    delete ui;
}

void MyControl::customSlot()
{

}

自定义控件库

自定义控件库,主要是创建一个控件库,在其他项目中的Designer设计界面中直接拖入使用。

Qt Creator的版本

先查看Qt Creator的版本,后续在创建和使用自定义控件也需要一样的版本号。
image-1670383697128

创建控件库

创建一个“Qt4 设计师自定义控件”的项目,如下图:
image-1670383714325
输入项目的名称,这里命名为“MyControl”
image-1670384252215
下一步,输入自定义控件类列表,这里随便输入一个“MyControl”类,后面不用这里创建的类。
image-1670384263793
一路点击下一步,到完成创建,此时,项目中有一个“MyControl”类的文件,将“mycontrol.h”和“mycontrol.cpp”都删除掉。然后,在项目中新建文件,选择“Qt设计师界面类”,如下:
image-1670384286639
创建名为“MyControl”的Widget,然后,进入UI设计界面,修改mycontrol.h文件的内容如下:
image-1670384297046
其中,QDESIGNER_WIDGET_EXPORT 在头文件 #include <QtDesigner/ QtDesigner> 中。
编译Release模式的库,只能编译Release模式的控件库才能被creator或者Designer识别,此时会生成dll和lib文件。
编译器的选择需要与前面查看的Qt Creator版本一致,这里选择“Desktop Qt 5.9.0 MSVC2015 32bit”。

使用自定义控件库

将编译好的dll文件放到如下目录中,这个目录是Qt安装的目录,根据自己Qt的版本和安装路径找到对应路径。
image-1670384409224
重新打开QtCreator,创建一个Widget项目,在设计器中就可以看到自定义窗口部件“MyControl”,此时,就可以将自定义可控件拖入界面中了,如下图:
image-1670384420803
虽然此时可以将自定义控件拖入界面中,但编译会提示找不到“mycontrol.h”文件。在项目根目录创建一个include的目录,将刚才编译的dll,lib,以及mycontrol.h文件都放在这里面,然后,在项目的.pro文件中添加如下内容:

INCLUDEPATH += $$PWD/include
LIBS += $$PWD/include/mycontrolplugin.lib

运行测试项目,即可看到自定义的控件在界面中显示,如下图所示:
image-1670384444575

0

评论区