qt自定义控件的封装

这篇具有很好参考价值的文章主要介绍了qt自定义控件的封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

刚学了一个很有意思的东西,前面学了list,Tree,Table三大控件和一部分常用基础控件,但感觉没啥意思,就是用别人的直接用,刚学了一个自定义控件的封装,流程如下:
 

想把两个不相关的组件封装在一块,直接用ui不行,所以先新添加了qt设计师页面,新添加了一个SmallWidget *ui

qt自定义控件的封装,50,qt,开发语言

qt自定义控件的封装,50,qt,开发语言

在smallwidget.ui中添加了一个,缩放至正常大小

qt自定义控件的封装,50,qt,开发语言

在主页面widget.ui中提升smallwidget.ui

取两个空白的widget,提升                      效果如下

qt自定义控件的封装,50,qt,开发语言

接下来在smallwidget.cpp中进行代码实现        刚听了一句话很有道理,逻辑业务的内容要用代码的实现   

信号和槽进行链接  connect     

//spinBox数字改变   slider跟着滑动
    void(QSpinBox:: * signal)(int)=&QSpinBox::valueChanged;//这里有两个同名函数(重载),所以需要函数指针指向int那个
    connect(ui->spinBox,signal,ui->horizontalSlider,&QSlider::setValue);
    //slider滑动  spinBox数字跟着改变
    connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);

重点:

存在两个同名函数(重载),所以需要函数指针指向t那个

void(QSpinBox:: * signal)(int)=&QSpinBox::valueChanged ;

这样就实现了spinBox和horizontalSlider的双向控制      效果如下

qt自定义控件的封装,50,qt,开发语言

增进一点  那么添加两个按钮 一个控制一半 ,一个控制qDebug输出获取结果怎么实现呢?

这很巧妙

qt自定义控件的封装,50,qt,开发语言 

 因为这是两个新实现,所以要新创建两个功能

先在smallwidget.h中声明自己提供两个功能

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

    //设置数据
    void setData(int val);

    //获取数据
    int getData();

再去smallwidget.cpp封装接口           这里主要是实现一个setValue一动,horizontalSlider跟着变,然后QSpinBox跟着变          get同理

//设置数据
void SmallWidget::setData(int val)//写成员函数加上了父类作用域
{
    ui->horizontalSlider->setValue(val);//setValue一动,horizontalSlider跟着变,然后QSpinBox跟着变
}

//获取数据
int SmallWidget::getData()
{
    return ui->horizontalSlider->value();
}

再到最妙的地方

pushButton一按就可以调用smallwidget               不要忘记我们之前再widget做了提升,所以它就可以用smallwight函数,所以点设置获取就可以连接上     这里太牛了  理解之后豁然开朗

    //点击设置到一半按钮
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        ui->widget->setData(50);
    });//此时能连上smallwidget原因是前面提升过了,所以它就可以用smallwight函数,所以点设置获取就可以连接上

    //点击获取当前值按钮
    connect(ui->pushButton_2,&QPushButton::clicked,[=](){
        qDebug()<<ui->widget->getData();//页面输出
    });

补充:两个按钮只能在这里设置,不能去smallwidget中设置,因为这个在uiwidget没有提升

豁然开朗文章来源地址https://www.toymoban.com/news/detail-816988.html

到了这里,关于qt自定义控件的封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT:自定义控件(Connect使用,子控件连接)

    1.举例:主页面为mainwindow,设置的子控件为Form 2.主界面 3.子控件中需要实现:QSpinBox移动 QSlider跟着移动,QSlider移动 QSpinBox数字跟着改变 还需要实现,在主界面中读取和设置子控件的数值: 子控件添加接口: 主界面通过按钮调用接口:

    2024年02月13日
    浏览(36)
  • Qt--自定义控件

    Qt中提供了应用在各种场景的控件,使开发人员在实际工作中选择。但有些特定的场合中这些控件并不满足需要时,Qt允许使用自定义的控件。 例:我们在工作中有这样一种需求,点击按钮会根据一些其他状态来显示不同的图片,这时Qt提供的QPushButton就无法满足这种需求,这

    2024年02月16日
    浏览(38)
  • Qt自定义控件 —— 子控件与父控件的鼠标事件问题

    目录 0、引言: 1、问题描述: 2、解决方案: 3、解决后效果: 在 Qt自定义控件 —— 颜色选择组合控件 https://blog.csdn.net/YMGogre/article/details/128955257 一文中我们创建了自定义的组合控件,在该控件中包含了三个子控件 —— QGraphicsView 、 QLineEdit 和 QPushButton 。当我们通过 setIt

    2024年02月09日
    浏览(93)
  • Qt —— 自定义飞机仪表控件(附源码)

    示例效果   部署环境      本人亲测版本Vs2017+Qt5.12.4,其他版本应该也可使用。   源码1

    2024年01月25日
    浏览(41)
  • Qt提升自定义控件,找不到头文件

    解决方案:去掉全局包含(只想解决问题的看到这应该就可以解决了,下面是原因分析) 原因分析:双击查看找不到的头文件,发现是includeSearchEdit.h,这里注意,include这种方式头文件不是从当前项目去查找头文件,而是从QT的include头文件去找,这当然找不到,所以我手动改为

    2024年02月12日
    浏览(43)
  • Qt编写可拖拽的自定义控件

    一直想做一个像卡牌游戏一样的,可以拖动卡片,实现改变位置,顺序交换的效果,今天我们一起来尝试一下。 类名为Card h文件 cpp文件 我们完成了一个很简单的200*400的圆角卡片 在主界面中展示看看 widget.h widget.cpp 运行后的效果: 首先要实现控件拖动,需要有2个要素,1:

    2024年02月11日
    浏览(46)
  • Qt+C++自定义控件仪表盘动画仿真

    程序示例精选 Qt+C++自定义控件仪表盘动画仿真 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Qt+C++自定义控件仪表盘动画仿真编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 一、所需工具软件 二、使用步骤  

    2024年02月12日
    浏览(49)
  • 【Qt学习】05:自定义封装界面类

    1.QListWidget 2.QTreeWidget 3.QTableWidget 4.StackedWidget 5.Others 6.自定义封装界面类-显示效果 创建自定义封装界面类步骤一般如下, (1)添加设计师界面类 添加新文件,Qt-设计师界面类, 根据需要选择界面模板即可,这里选择Widget作为界面模板进行创建, 根据语义为自定义的界面类

    2024年02月11日
    浏览(31)
  • 【五一创作】VS+Qt主界面内嵌自定义控件的四种方法以及不同自定义控件数据交互

    在Qt界面开发过程中,一个主界面或者主窗口看成是各个控件排列组合后的集合,对于一些项目而言,有些常用的控件可以封装成自己想要的控件样式并且复用,比如说,log显示控件,图像/视频显示控件等,可以将常用的控件代码封装起来,以便下次复用,内嵌在不同的主界

    2024年02月11日
    浏览(63)
  • QT自定义优雅的表单控件,简单实现设置界面布局

    FormView.h FormView.cpp 核心函数 函数 变量 功能 addEditableItem title: 输入框前面的提示文字,同时作为该控件的标识符 place_holder: 输入框中的提示文字 在表单中插入一个可填写项 addCheckableItem title: 不显示在UI中,仅作为该控件的标识符 content: 勾选框后面的内容 init_status: 勾选框的初

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包