在Qt设计师(Qt Designer )控件面板加入自定义控件

Qt Designer 详细介绍 QtDesigner 是 QT 官方推出的图形化制作GUI界面的工具。通过拖拽控件的方式就可以快速的制作出一个 GUI 界面。可视化搭建好图形界面之后,只需要关注业务代码即可。Qt Designer 的设计符合MVC的架构,其实现了视图和逻辑的分离。使用 Qt designer 就是为了快速创建出 UI 界面,毕竟手动实现界面效率还是比较低的,特别是还要考虑各种固定组件的布局位置。组件触发可以放在 python 代码中完成。Qt Designer 的使用方法其实不难,从左侧的组件库里面拖拽组件放到窗口里面。 阅读详情
AI摘要

本文介绍了如何在Qt环境中,特别是QtDesigner中创建和插入自定义控件,包括开发环境配置、具体实现步骤以及注意事项,以满足特定业务需求。,

目录

1. 问题的提出

2. 本次开发环境说明

3. 具体实现

4. 注意的问题

5. 参考链接


1. 问题的提出

        在Qt开发中,经常利用Qt设计师(Qt Designer )把界面设计好,将界面放到ui文件中,将逻辑处理放到cpp文件中,这样可以做到界面和逻辑分离,便于维护和分工,如:让界面设计人员做界面,让开发人员实现逻辑。

      Qt Designer提供功能常用的控件,如:编辑框、文本控件、组框等等,但有时还是不存在满足自己业务特定需求的控件,这时就需要自己开发,并插入到Qt Designer控件面板。如何在Qt Designer控件面板实现插入自定义的控件呢?

2. 本次开发环境说明

  • Ubuntu 18.0.4。
  • Qt 5.14.1。
  • QtCreator 4.11.0。

3. 具体实现

      如图选择‘其他项目’中的‘Qt设计师自定义控件’然后选择‘Choose’(也可双击‘Qt设计师自定义控件’选项)

   在框选位置输入项目名称,然后点击‘下一步’

    注意:构建套件的版本类型需要与下图中‘帮助’列表中‘About Qt Creator’弹窗的信息版本一致

然后选择对应版本的构建套件下一步即可

双击“<新类>”节点,更改控件类名,右侧会根据控件类生成相关的文件(如果需要项目包含源码默认勾选内容即可),选择完成后,可直接点击‘下一步’到最后点击‘完成’

然后一直单击“下一步”直到完成。 完成后再从QWidget派生的子类的cpp和.h文件中添加如下代码:

#ifndef ARROWPLUGIN_H
#define ARROWPLUGIN_H

#include <QWidget>

class arrowPlugin : public QWidget
{
    Q_OBJECT

public:
    
    Q_PROPERTY(QColor brushcolor READ brushColor WRITE setBrushColor)
    Q_PROPERTY(QColor pencolor READ pencolor WRITE setPenColor)
    Q_PROPERTY(int penwidth READ penWidth WRITE setPenWidth)

public:
    explicit arrowPlugin(QWidget *parent = nullptr);
    ~arrowPlugin();
public:

    QColor pencolor() const;
    void setPenColor(const QColor&clr);
 
    QColor brushColor() const;
    void setBrushColor(const QColor&clr);

    int penWidth() const;
    void setPenWidth(int nWidth);

private:

    virtual void paintEvent(QPaintEvent *event) override;
 private:

    int m_nPenWidth{1};
    QColor m_penColor{Qt::black};
    QColor m_brushColor{Qt::white};
    QPen* m_pPen{nullptr};
    QBrush* m_pBrush{nullptr};
};

#endif // ARROWPLUGIN_H
#include "arrowplugin.h"
#include<QPainter>
arrowPlugin::arrowPlugin(QWidget *parent) :
    QWidget(parent)
{
    setPenWidth(1);
    setPenColor(Qt::black);
    setBrushColor(Qt::white);

}

arrowPlugin::~arrowPlugin()
{
    delete  m_pPen;
    delete  m_pBrush;
}

QColor arrowPlugin::pencolor() const
{
    return m_penColor;
}

void arrowPlugin::setPenColor(const QColor&clr)
{
    m_penColor = clr;
    if(nullptr == m_pPen)
    {
        m_pPen = new QPen();
    }

    m_pPen->setColor(clr);

    update();
}

QColor arrowPlugin::brushColor() const
{
    return m_brushColor;
}

void arrowPlugin::setBrushColor(const QColor&clr)
{
    m_brushColor = clr;

    if(nullptr == m_pBrush)
    {
        m_pBrush = new QBrush;
    }

     m_pBrush->setColor(m_brushColor);

     update();
}

int arrowPlugin::penWidth() const
{
    return m_nPenWidth;
}
void arrowPlugin::setPenWidth(int nWidth)
{
    m_nPenWidth = nWidth;

    if(nullptr == m_pPen)
    {
        m_pPen = new QPen();
    }

     m_pPen->setWidth(m_nPenWidth);

     update();
}

void arrowPlugin::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setPen(*m_pPen);
    painter.setBrush(*m_pBrush);

    auto twicePenWidth = 2 * m_nPenWidth;

    // 减去2倍画笔宽,是为了防止画笔宽很大时,画到窗体边框上去了
    painter.drawEllipse(m_nPenWidth, m_nPenWidth, this->width() - twicePenWidth, this->height() - twicePenWidth);
}

使用Qt的Release模式构建项目。构建完成后会默认在pro上级目录(如果没有更新构建目录的情况下)生成构建目录,在构建目录中的对应构建模式(Debug模式和Release模式)的同名文件夹中会包含库的相关文件(如下图)

将库文件拷贝到对应的Qt安装目录中,如我将其拷贝到如下两个目录:

/home/dansir/Qt5.14.1/5.14.1/gcc_64/plugins/designer
/home/dansir/Qt5.14.1/Tools/QtCreator/lib/Qt/plugins/designer

注意:如果你是在Windows下用Visual Studio +  Qt Visual Studio Tools开发,则需要将生成的dll和lib文件拷贝到如下两个目录:

D:\Qt\Qt5.12.4\Tools\QtCreator\bin\plugins\designer
D:\Qt\Qt5.12.4\5.12.4\msvc2017\plugins\designer

如下:

 

上述目录,请根据你本机实际更改。同理,拷贝到的目标文件夹需要与构建版本对应。

重启QtCreator,若是自定义插件添加成功,在Qt设计师中会自动生成‘自定义窗口部件’的模块,然后就可将自定义的插件当成普通项目使用,如下:

按如下步骤进行:

  1. 在设计师中拖动自定义的插件到窗体。
  2. 在设计师右侧控件属性面板更改控件的属性。

4. 注意的问题

      如果在步骤3中,将生成的插件放到指定目录,重启QtCreator出现奔溃退出,则说明编写的自定义插件有异常,请排除该异常,则QtCreator就能起来了。

5. 参考链接

【1】:Qt之自定义插件(单控件,Qt设计师中使用)。

【2】:编写Qt Designer自定义控件(二)——编写自定义控件界面。

Qt Designer简介 来源 http://www.python3.vip/tut/py/gui/qt_03/ 回顾 在前面的程序中,我们学习了怎么样用程序来把QT程序界面的 一个个窗口、控件创建出来 问题分析 QT程序界面的 一个个窗口、控件,就是像上面那样用相应的代码创建出来的。 但是,把你的脑海里的界面,用代码直接写出来,是有些困难的。 很多时候,运行时呈现的样子,不是我们要的。我们经常还要修改代码调整界面上控件的位置,再运行预览。反复多次这样操作。 可是这样,真的…太麻烦了。 其实,我们可以用QT界面生成器 Qt Desi 阅读详情

相关推荐

[ PyQt入门教程 ] Qt Designer工具的使用

Widget Box控件工具箱是按照控件作用类别进行划分的。这里作为实现入门级界面实现,主要介绍最常使用的控件及控件对象相关函数。函数方法知道怎么获取控件输入内容以及如何将后台操作结果输出到界面控件显示的主要函数就可以了。(1)显示控件。Lable:文本标签,显示文本,可以用来标记控件。:显示文本控件。用于后台命令执行结果显示。(2)输入控件,提供与用户输入交互Line Edit:单行文本框,输入单行字符串。控件对象常用函数为Text() 返回文本框内容,用于获取输入。

ZhiYilang的博客 1万+

Qt--自定义控件

这里以 SpinBox和HorizontalSlider 组合的自定义控件为例,介绍常规的自定义控件的开发步骤。假设这里有一个Widget项目,作为工作项目。右键项目 -》添加新文件, 选择Qt -》Qt设计器界面类:选择自定义控件的父类:输入自定义控件类的名称:最后会给出添加的文件:添加完成后可以看到.pro文件中自动添加了自定义类的.h .cpp以及ui文件,另外在界面文件中,也多了一个smallwidget.ui文件:然后就可以在smallwidget.ui文件中设计我们的自定义控件了。

SNAKEpc12138的博客 7421

PyQt窗口设计之Qt Designer

PyQt Qt Designer ui文件的转化 qrc文件的转化

Itsme_MrJJ的博客 1万+

Qt系列文章036-自定义Qt Designer插件

1 前言   上节讲了如何自定义一个QWidget组件,然后提升为QWidget控件来使用,本节将讲解如何自定义一个插件,直接拖放,而插件时基于组件形成的,所以前面的知识是必须要掌握滴~ 2 创建Qt Designer Widget插件项目   Qt提供两种设计插件的API,可以用于扩展Qt的功能。高级(high-level) API用于设计插件以扩展Qt的功能,例如 定制数据库驱动、图像格式、文本编码、定制样式 等,Qt Creator 里大量采用了插件,单击Qt Creator的主菜单栏的 Help→A

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 3848

Qt Designer中QTabWidget可视化设计核心要点

深入解析Qt Designer中qtabwidget的可视化布局与交互设置,掌握标签页管理与界面切换的核心方法,提升开发效率。

weixin_42601134的博客 1015

Qt6.5实战:将QML自定义控件封装为设计器可拖拽插件

QML作为Qt生态的声明式语言,常被用于构建动态界面。然而自定义控件的复用与可视化编辑一直是团队协作中的效率瓶颈。通过Qt Creator的插件机制,可以将QML控件注册为设计器可拖拽的可视化组件,这一过程涉及Qt Quick模块化、C++类型注册与qmltypes元数据生成等核心概念。理解其原理,即通过qmldir声明模块身份、利用Q_PROPERTY暴露可配置属性,能让控件在属性面板中实时编辑。在实际项目中,将控件封装为插件可显著提升界面原型产出速度,降低设计师与开发者的沟通成本,适用于组件库建设、低代

weixin_34200628的博客 401

QT自定义报表控件开发:从数据绑定到Designer插件实战

自定义控件是QT框架中实现复杂UI组件的重要技术手段,其核心原理是通过继承QWidget并重写绘制事件来实现特定的渲染逻辑。在工业软件和数据可视化领域,自定义报表控件的技术价值尤为突出,能够解决标准控件在复杂表格展示、大数据量渲染和打印排版方面的局限性。通过QT的属性系统(Q_PROPERTY)和元对象机制,开发者可以创建支持设计时配置的可视化组件,实现数据绑定、样式自定义等高级功能。在实际应用场景中,这类控件需要兼顾性能优化和用户体验,特别是在处理万级数据量时,虚拟滚动和渲染缓存成为关键技术。本文基于QT

weixin_34005042的博客 388

Qt系列文章之三十六(自定义Qt Designer插件)

文章目录前言创建Qt Designer Widget插件项目插件项目各文件的功能实现MyBatteryPlugin 类MyBatteryDesignerPlugin.pro 的内容内置项目mybattery.pri组件类MyBattery的定义插件的编译与安装使用自定义插件使用MSVC编译器输出中文的问题运行效果图demo下载 前言   上节讲了如何自定义一个QWidget组件,然后提升为QWidget控件来使用,本节将讲解如何自定义一个插件,直接拖放,而插件时基于组件形成的,所以前面的知识是必须要掌握滴~

波风水门 703

Qt自定义界面组件(2)----创建设计师自定义组件

本文总结了自定义控件并集成到Qt设计师中的详细过程。

书灯的博客 1489

Qt自定义图片开关按钮:基于QAbstractButton的优雅实现与Designer集成

在图形用户界面开发中,控件定制化是提升交互体验与视觉表现的关键环节。Qt作为跨平台C++框架,提供了强大的控件体系,但默认的QCheckBox或QPushButton往往难以满足对开关控件状态可视化的精细要求。通过继承QAbstractButton,开发者可以复用点击、选中、信号发射等核心交互机制,仅需重写paintEvent即可将图片绘制为开关外观,同时利用Q_PROPERTY属性系统实现与Qt Designer的深度集成。相比传统的QSS样式表方案,自定义控件在状态控制、图片适配、信号复用和工程维护性上

weixin_32821533的博客 312

基于FFmpeg与Nginx的大华摄像头实时视频Web接入方案

本文详细介绍了一种基于FFmpeg与Nginx的大华摄像头实时视频Web接入方案。该方案通过FFmpeg将摄像头RTSP协议流转换为浏览器友好的HLS格式,并利用Nginx进行高效分发,最终结合Video.js构建前端播放页面,实现无需插件的跨平台实时监控。方案具有免费、轻量、稳定、易于部署的特点,适合中小企业、个人开发者快速搭建内部监控或展示系统。

weixin_28040125的博客 346

Qt自定义控件祖师爷/超207个精美控件/涵盖各行各业方方面面/一直被模仿从未被超越

本文介绍了作者在Qt自定义控件开发领域的丰富经验,拥有超过207个精美控件并持续更新。控件类型涵盖仪表盘、进度条、导航栏等多样化组件,支持跨平台、多编译器和Qt版本。所有控件均采用零耦合设计,可独立集成,并提供详细中文注释和完整示例。作者开源了大量代码,虽部分被他人挪用但保持开放态度。项目支持生成设计师插件、动态库及WASM格式,配套属性设计器和图形字体资源。相关资源可通过Gitee、GitHub和百度网盘获取。

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 1609

自定义Qt Designer插件

采用创建Qt Designer插件的方式来创建QwBattery类,并将其安装到UI设计器的组件面板里。该类的功能与上篇所讲的QmyBattery类功能一样。 要创建UI设计器插件类,单击Qt Create的“File”-> "New File Project"菜单,在出现的对话框里选择”其它项目“分组里的”Qt4设计师自定义控件“,会出现一个向导对话框,按向导逐步完成项目创建。 ...

-却道天凉好个秋的博客 1427

【阿里云大模型高级工程师ACP习题集】2.3 优化提示词改善答疑机器人回答质量

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1630

【MATLAB强化学习工具箱】学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent

Simulink中便于搭建各类动力学与控制模型,通过将原有的控制器替换为AI控制器,可以方便使用已有模型,提供增量效果。 本节的重点是如何引入Simulink模型作为env,其他的内容在之前的文章中已有说明。 以水箱模型watertank为例,如下图所示: 采用PI控制器,控制效果如下所示: 将此PI控制器替换为神经网络控制器后,系统架构如下图所示: 具体替换策略如下所示: (1)删去PID控制器; (2)增加RL Agent模块; (3)观测器模块: 观测向量为:,其中...

bear_miao的博客 1万+

Qt从入门到入土(一) QtDesigner完成自定义水波纹和切换开关设计

简单完成自定义水波纹和切换开关控件的设计,完成效果类似于手机充电时弹出的窗口。

2302_82012065的博客 1774

PROFINET非周期数据通信实战:从报文解析到参数读写

本文详细解析了PROFINET非周期数据通信的实战应用,从报文结构到参数读写全流程。通过西门子PLC与驱动器的配置案例,深入讲解非周期通信在工业自动化中的关键作用,包括硬件选型、软件配置及常见问题排查,帮助工程师高效实现设备参数配置与诊断。

weixin_42522953的博客 514

Qt自定义控件封装组合:从重复代码到可复用复合控件实战

在桌面应用开发中,UI控件复用是提升工程效率的关键。Qt自定义控件封装组合通过将基础控件按业务语义打包,实现可配置、可插拔的复合组件,其核心原理基于组合优于继承的设计哲学,利用Q_PROPERTY属性系统和信号转发机制,让控件具备原生般的属性编辑与样式定制能力。这种封装方式能显著降低重复代码的维护成本,沉淀业务语义,适用于金额输入、表单字段等高频场景。本文围绕LabeledInputWidget的完整实现,深入讲解布局构建、属性系统、Designer提升及常见问题排查,帮助开发者构建可复用的Qt控件库。

weixin_34075268的博客 539

PCL 三维重建 泊松曲面重建算法

本文介绍了基于泊松曲面重建算法的三维重建过程。泊松重建是一种利用点云数据生成三维表面的算法,它基于点云的法线估计和泊松方程的求解,能够生成光滑且连续的曲面模型。该方法适用于复杂形状和细节的表面重建。

纵马踏花向自由 1090

STM32 TIM3硬件XOR+复位模式实现霍尔信号精准捕获

霍尔传感器是电机控制系统中获取转子位置的关键器件,其三路数字信号需通过高精度、低延迟的边沿检测机制转换为电角度信息。其核心原理在于利用定时器输入XOR逻辑合并多路信号,并结合从模式复位(Reset Mode)实现硬件级时间间隔测量——每次跳变强制计数器清零,使CNT值直接表征换相周期。该方案规避了软件轮询的不确定性,显著提升FOC控制的实时性与鲁棒性。典型应用场景包括BLDC/FOC电机驱动、机器人关节伺服及工业变频器设计,尤其适用于STM32F4系列等具备硬件XOR与从模式控制器的MCU平台。

weixin_28931507的博客 92

Qt设计师插件开发实战:手把手教你从零打造可拖拽的自定义控件(附完整代码)

本文提供了一份详尽的Qt设计师插件开发实战指南,手把手教你从零创建可拖拽的自定义控件。文章以开发一个十六进制SpinBox为例,深入剖析了Qt Designer的插件扩展机制,涵盖了工程创建、核心代码编写、编译配置、部署调试等完整流程,并分享了解决插件加载失败等常见问题的经验。

w3x4y的博客 232

基于物联网的门禁与考勤系统(阿里云)_81

本课题设计的基于物联网的门禁与考勤管理系统,结合现代信息技术,利用指纹识别、射频卡、密码输入和远程控制等多种开锁方式,提升门禁系统的安全性和灵活性;同时,通过物联网平台进行数据上传和远程管理,极大提高了管理效率。通过智能化的考勤功能,系统可以实时记录员工的出入情况,并通过云平台进行远程查询和管理,推动门禁与考勤管理的数字化、智能化和高效化。

1万+

Qt自定义控件封装组合:从设计到实战的完整指南

在GUI开发中,组件复用是提升工程效率的关键。Qt作为主流框架,其自定义控件封装机制允许开发者将界面元素与业务逻辑打包为独立组件,通过继承QWidget或现有控件实现功能组合与增强。这种技术不仅能减少重复代码、统一界面风格,还能通过信号槽机制实现模块间松耦合。典型应用包括带标签的输入框、地址选择器等复杂交互组件,广泛用于桌面端和嵌入式界面开发。本文深入解析Qt自定义控件的封装思路、核心实现细节与常见问题排查,涵盖接口设计、样式处理、信号转发及Designer集成等实战要点,帮助开发者构建可复用的控件库。

weixin_34268169的博客 375

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python GUI 开发 | Qt Designer — 工具介绍

窗口部件盒” 区域提供了很多控件,每个控件都有自己的名称,用于提供不同的功能,用户可以通过拖拽就可以很轻松的将部件直接拖动到主窗口中:通过快捷键Ctrl + R。

Blue17 の 小窝 3398

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PyQt5设计师QtDesigner控件箱控件介绍及讲解

Qt Designer 是一个由Qt官方提供的图形用户界面设计工具,旨在帮助开发者快速、方便地设计和布局Qt应用程序的用户界面。Qt Designer提供了一个直观的可视化界面,开发者可以通过拖放、设置属性等方式设计界面,而无需编写繁琐的布局代码。以下是关于Qt Designer的一些介绍和说明:1.:Qt Designer允许开发者通过直观的可视化界面设计用户界面,包括窗口、对话框、按钮、文本框、标签等各种控件的布局和样式。2.

图灵追幕者博客录 2611
上一篇: 无标题栏的Qt子窗体在父窗体中停靠时,如何做到严丝合缝
下一篇: 收不到oracle注册或重置密码邮件导致无法登录oracle神奇解决方法
荆楚闲人
博客等级 码龄20年 3万+粉丝 473原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值