在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

告别wx.showActionSheet:微信小程序自定义底部弹框的5种实现方式对比

本文深入对比了微信小程序中替代原生wx.showActionSheet的五种自定义底部弹框实现方案。从基础视图层模拟到组件化封装,再到利用第三方UI库、CSS3动画及Page-Meta组件,详细分析了各方案的优缺点与适用场景,旨在帮助开发者根据项目需求,选择最合适的方案以实现高度定制化、交互丰富的弹框效果。

weixin_29005499的博客 191

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

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

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

qmc5883p芯片坐标系方向定义

问题 最近一个项目用到qmc5883p, 然而确定磁力计方向的时候发现datasheet上写的不是很清楚, 并且example中还有一个设置方向的一步, 于是测试了芯片坐标方向并记录了下来; 该芯片和qmc5883L方向并不一致; 结果 qmc5883P的datasheet给出来如下说明, Y为笔者添加的; 但是这个方向是按照datasheet的example设置的结果: //Define the sign for X Y and Z axis qmc5883p_write_reg(0x2

时有限 4119

自定义Qt Designer插件

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

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

NVIDIA Tao Toolkit环境配置踩坑

请搭配食用该文章为 Tao 安装中可能出现的问题进行解答,如果存在本文章中没出现的问题,欢迎提问,由我复现后更新文章。由于大部分云服务器厂商不能支持 docker,因此我使用的环境为2023年5月27日在平台租的 3080 旧版环境进行实验。

qq_36630208的博客 771

CDD那些事 - DID and SecurityAccess

本文介绍了SecurityAccessSID27的安全访问配置流程:1.通过StateGroups添加Level2群组;2.在Classes定义L2子功能;3.配置4步解锁流程,选择对应解锁等级;4.在DiagnosticInstance设置请求响应。同时说明了DID配置的两种方式:在DIDs页面定义或通过Identification页面创建,前者定义更全面。文章还提到ServiceList支持view/edit模式,其中edit模式可配置DID的多服务支持(如同时支持SID22读取和SID2E写入),但该

ziteng21的博客 256

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

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

2302_82012065的博客 1774

ArcGIS JSAPI 高级教程 - 添加多个 box 立方体 - 通过顶点、索引、UV 自定义每个 box、每个面不同颜色

ArcGIS JSAPI 高级教程 - 添加多个 box 立方体 - 通过顶点、索引、UV 自定义每个 box、每个面不同颜色。

非科班Java出身GISer的博客 400

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

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

weixin_34075268的博客 539

基于STFT和卷积神经网络的时序数据分类

我们提供了相应的代码和数据,读者可以直接运行并尝试在自己的数据集上进行分类实验。在本文中,我们将介绍一种基于短时傅里叶变换(STFT)和卷积神经网络(CNN)的时序数据分类方法。我们将提供可直接运行的代码和数据,以帮助读者理解和实现这一方法。STFT可以提取信号的频谱信息,有助于捕捉时序数据中的关键特征。在这个例子中,我们将使用一个简化的手势识别数据集作为示例。在这段代码中,我们使用Adam优化器和稀疏分类交叉熵损失函数进行模型的编译。然后,我们使用训练集进行模型的训练,同时使用测试集进行模型性能的验证。

CodeWOW的博客 694

使用podspec创建iOS插件

概述 在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文件、头文件、资源文件和说明文档等集中在一起,并且可以在运行时进行动态加载。 目前,很多应用越做越复杂,应用程序也显得越来越臃肿。试想一下,如果将一些不常用的功能做成一个插件,然后根据用户的需求从网络中...

xiangzhihong8的专栏 992

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

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

w3x4y的博客 232

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

weixin_34268169的博客 375

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

Blue17 の 小窝 3398

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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、付费专栏及课程。

余额充值