Qt C++控件提升,微件之间定义传递信号和槽案例

Widget  ----微件,Android编程里面常见的控件组织形式

  • 新建一项目,步骤如下:

 

  • 在ui设计界面中添加了一个Widget控件:图片中选中处

  • 自定义一个微件,这里我命名为smallwidget,在构造函数实现中,定义一个旋转数码盒(Qt中的spinbox),一个滑动条。
#include "smallwidget.h"
#include <QSpinBox>
#include <QSlider>
#include <QHBoxLayout>
smallwidget::smallwidget(QWidget *parent) : QWidget(parent)
{
    QSpinBox *qs = new QSpinBox(this);//定义一个spinbox
    QSlider *qsld = new QSlider(Qt::Horizontal
,this);//定义一个滑动条
    QHBoxLayout *qhlayout = new QHBoxLayout(this);//定义一个横向的容器
    qhlayout->addWidget(qs);//往容器中添加定义好的spinbox
    qhlayout->addWidget(qsld);//往容器中添加定义好的滑动条
    connect(qs,static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),qsld,&QSlider::setValue);//注解一
    connect(qsld,&QSlider::valueChanged,qs,&QSpinBox::setValue);//注解2
}
实现效果:
spinbox中的数码发生改变,滑动条也随之滑动(增加右移,减少左移)
  • 注解一

为实现滑动条随同spinbox的值一同改变,我们通过帮助手册发现(光标放在类名处点击F1),Spinbox的信号valueChanged有重载

显然,为了使用第一个,我们要用到类型转换,把spinbox信号强转为,参数使用整型的那个(函数指针),于是有了

connect(qs,static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),qsld,&QSlider::setValue);
  • 注解二
这一条主要是实现,spinbox的值随这滚动条的变化而改变
  • 控件(微件)提升--promoted Widget
选中文章开头提到的微件,鼠标选中处,右键点击微件(也有可能是控件)提升(promoted Widget)

由于我们自定义的微件是smallwidget,所以要把类名添加到 Promoted class name处,勾选全局包含(Global include),点击添加

如此一来,窗体上一个普通的Widget,就提升成为你的smallwidget(里面包含了spinbox和滚动条,而且还能相互通信)

运行结果:拖动滚动条,spinbox值发生改变;插图为 “飞行烟囱”苏联su-9高空高速截击机

原文地址:https://www.cnblogs.com/saintdingspage/p/12264575.html

时间: 2024-10-11 23:09:45

Qt C++控件提升,微件之间定义传递信号和槽案例的相关文章

SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

实现思路: 1:准备一个ThreadLocal变量,供线程之间共享. 2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中. 3:每个微服务在使用FeignClient调用别的微服务时,先从ThreadLocal里面取出user信息,并放在request的请求头中. 4:封装为一个注解,在启动类上标记即可. 代码样例: 1:ThreadLocal工具类 :UserInfoContext package com.test.domi

【转】SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

实现思路: 1:准备一个ThreadLocal变量,供线程之间共享. 2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中. 3:每个微服务在使用FeignClient调用别的微服务时,先从ThreadLocal里面取出user信息,并放在request的请求头中. 4:封装为一个注解,在启动类上标记即可. 代码样例: 1:ThreadLocal工具类 :UserInfoContext package com.test.domi

线程之间灵活传递信号(ManualResetEventSlim )

当主程序启动时,首先创建ManualResetEventSlim 类的一个实例.然后启动三个线程,等待事件信号通知它们继续执行. 1 /// <summary> 2 /// 创建 ManualResetEventSlim 实例 3 /// </summary> 4 private static ManualResetEventSlim _mainEvent = new ManualResetEventSlim(false); 5 6 /// <summary> 7 //

Qt on Android: Qt Quick 事件处理之信号与槽

前面两篇文章< Qt on Android:QML 语言基础>和<Qt on Android: Qt Quick 简单教程>中我们介绍了 QML 语言的基本语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经可以完成简单的 Qt Quick 应用了.接下来呢,哈,我们要介绍 Qt Quick 中一个灰常灰常重要的主题:事件处理.这将是比较长长长长的一篇,哦,不还有后续好几篇--废话少说,还是谈正事儿吧兄弟姐妹们. 本文参加 CSDN 博文大赛,请点这里投我一票,谢

QT学习之信号和槽

摘要:在QT中,我们可以使用系统提供的函数实现信号和槽的链接,但是在QT中不仅仅如此,还可以让用户自己定义信号和槽函数.在本文中,我将在自己定义的teacher类下定义信号函数hungry,然后在自己定义的student类下定义槽函数treat,最后在wedget类下将两个函数进行链接.触发.显示. 1.teacher类 有信号函数,本例中就是hungry,有参数和没有参数的,其中有参数的函数中的参数代表要传递的内容 头文件: 1 #ifndef TEACHER_H 2 #define TEAC

Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置

QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有mvc的特点). 1. QStandardItemModel在QTreeView中的使用 使用QTreeView的对应模型是QStandardItemModel,这个是Qt对应ui界面最有用的模型,它可以用于树形控件.列表控件.表格控件等等和条目有关的控件.QStandardItemModel用于列表

Qt基本控件及三大布局

Qt基本控件及三大布局 来源: http://blog.csdn.net/a2604539133/article/details/73920696 Qt基本模块 一.Qt的三大布局 QHBoxLayout: 水平显示布局,所有在其上面摆放的控件只能水平排列下去: QVBoxLayout:  垂直显示布局,所有在其上面摆放的控件只能垂直排列下去: QGridLayout  格子显示布局,可以按照表格的形式显示布局: 二.Qt的控件 label:标签,可以显示文本信息,只读: pushbutton

Android培训准备资料之UI一些相似控件和控件一些相似属性之间的区别

这一篇博客主要收集五大布局中的一些相似控件和控件一些相似属性之间的区别 ImageView ImageButton Button 三者有啥区别? (1)Button继承自TextView,ImageView继承自View,ImageButton继承自ImageView                                              (2)Button支持android:text属性,而ImageButton和ImageView不支持,但是ImageView和ImageB

QT绘图技术(二)QCustomPlot - 超强超小巧的qt绘图控件

QCustomPlot - 超强超小巧的qt绘图控件 2016-10-22 16:03:25|  分类: QT| 官方网站:http://www.qcustomplot.com/ 1.0下载地址:http://download.csdn.net/detail/czyt1988/5986701 下载LOFTER我的照片书  | QCustomPlot 超强超小巧的qt绘图控件,非常漂亮,非常易用,只需要加入一个qcustomplot.h和qcustomplot.cpp即可使用,远比qwt方便,若只