c调用c++ qt_【C/C++】qt库结构及示例

2023-05-16

QT库结构

Qt图形库是一个组织严谨的C++类库,其结构如图所示

bd524aa5f022aabf176811d582b307f4.png

细说Qt库

Qt类库中包含了上百个类,结构十分复杂,上图展示了Qt_3.2类库的基本结构。

Qt类库中的类可以分成两种类型:一种是直接或者继承自Qt类

另一种是独立的,不从任何类集成

独立的类在Qt库中一般用来完成独立的功能,例如操作XML文件的QXmlReader类。

直接从从Qt类继承的类主要可以分成QObject类和QEvent类。QObject类是所有应用组件的基类,QEvent类是所有QT事件响应类的基类。其他的还有QCursor、QPen、QTab等类描述的窗口组件可以在窗体的任意地方出现,因此直接从Qt基类继承。

QWidget类是组件容器,所有可以结合在一起的组件都从该类继承。QWidget类继承自QObject类,因为所有的窗体组件都是应用组件的一部分。

Qt类库组织合理,在使用的时候按照类的集成关系操作。如QButton、QSlider等组件可以被加入到QWidget对象中,而QProcess、QTimer组件是不能加入到QWidget对象中的。

示例效果

9ac43d6e99a15588d3191b1bbfe8eb76.png

工程源码/*

*功能:滑动Slider控件的滑块时,Spin控件的数值相应改变。同样的,在修改Spin控件值的时候,Slider控件的数值也相应变化

*/

#include

#include

#include

#include

#include

#include

class MyWidget : public QWidget

{

public:

MyWidget(QWidget *parent=0); //声明MyWidget类的构造函数

}; //注意分号

MyWidget::MyWidget(QWidget *parent):QWidget(parent)

{

QSpinBox *agenum_sb=new QSpinBox();

agenum_sb->setRange(0,100);

agenum_sb->setValue(0);

QSlider *agenum_sl=new QSlider(Qt::Horizontal);

agenum_sl->setRange(0,100);

agenum_sl->setValue(0);

connect(agenum_sb,SIGNAL(valueChanged(int)),agenum_sl,SLOT(setValue(int)));

//设置Spin控件修改数值响应函数,将Spin控件改变数值的事件与Slider控件关联

connect(agenum_sl,SIGNAL(valueChanged(int)),agenum_sb,SLOT(setValue(int)));

//设置SLider控件修改数值响应函数,将Slider控件改变数值的事件与Spin控件关联

QHBoxLayout *layout=new QHBoxLayout; //创建列布局的对象

layout->addWidget(agenum_sb);

layout->addWidget(agenum_sl);

setLayout(layout); //设置MyWidget使用列布局

setWindowTitle("Enter a number By-Mystery"); //设置窗体标题

}

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

MyWidget widget;

widget.show();

return app.exec();

}

Qt中信号与槽系统

源码中的connect()函数原型为:connect(boject1, signal, object2, slot);

其中,Object1和Object2分别代表两个不同的Qt对象(继承自QObject基类),signal代表Object的信号,slot代表Object2的槽。

信号和槽是Qt引进的一种处理机制,信号可以被理解为一个对象发出的事件请求,槽是处理信号的函数。

设计信号和槽的机制是为了避免回调函数的缺点。回调函数是一个函数指针,如果希望一个处理函数发出一些通知事件,可以把另一个函数的指针传递给处理函数,处理函数在适当的时候使用函数指针回调通知函数。从回调函数的调用过程可以看出,回调函数存在类型不安全和参数不安全的缺点。因为对于调用函数来说,通过函数指针无法判断出函数的返回类型以及参数类型。

信号和槽能完成回调函数的所有功能,并且信号和槽机制是类型安全的,而且还能完成其他许多复杂的功能。

信号和槽不仅是单一的对应关系,还可以是多对多的关系。一个信号可以被连接到多个槽,一个槽也可以响应多个信号,此外,信号之间也可以被连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c调用c++ qt_【C/C++】qt库结构及示例 的相关文章

  • [Unity3D]矢量数学:向量的点乘(内积)和叉乘(外积)

    Unity使用左手坐标系 xff1a 拇指X轴 xff0c 食指Y轴 xff0c 中指Z轴 计算公式 xff1a 设 A Ax xff0c Ay xff0c Az B Bx xff0c By xff0c Bz xff0c 则 1 向量的模
  • itext 用的pom插件

    lt dependency gt lt groupId gt com itextpdf lt groupId gt lt artifactId gt itext asian lt artifactId gt lt version gt 5
  • Rplidar学习(三)—— ROS下进行rplidar调试

    一 建立工作空间 编译包 mkdir p catkin rplidar src 创建目录 cd catkin rplidar src 打开目录 下载rplidar ros数据包 xff0c 进行移动 git clone https gith
  • 数据包嗅探工具:HTTP请求/响应分析工具

    HTTPNetworkSniffer
  • RoboMaster 2017:机器人版的「王者农药」,工程师们的竞技时代

    8月6日晚 xff0c 第十六届全国大学生机器人大赛 RoboMaster 2017机甲大师赛在华润深圳湾体育中心 春茧 体育馆举行 xff0c 关于这个比赛的盛况已经无需赘述 xff0c 去年雷锋网参加上届比赛时 xff0c 报道的是 像
  • python popen.stdout.read阻塞 解决办法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 需求 xff1a 利用python的subprocess模块结合logging模块实现监控子程序运行情况 代码如下 程序阻塞在stdout readz这里 xff0c 日志
  • Windows云服务器CPU使用率高的问题一例

    作者 xff1a 声东 大家好 xff0c 今天跟大家分享一例Windows云服务器CPU使用率高的问题 问题症状 客户购买了一台Windows 2016云服务器 xff0c 登录之后发现这台服务器的CPU使用率一直保持在90 以上 问题分
  • java 类知识_Java类基础知识

    同时按住Java中的Alt键和 39 39 键 xff0c Eclipse会给你代码提示 java 的几个基本概念 1 JVM java 虚拟机 运行java 程序的根本 2 JRE java 运行环境 xff0c java 虚拟机 43
  • UDP程序设计

    UDP套接口是无连接的 不可靠的数据报协议 xff1b 既然他不可靠为什么还要用呢 xff1f 其一 xff1a 当应用程序使用广播或多播时只能使用UDP协议 xff1b 其二 xff1a 由于他是无连接的 xff0c 所以速度快 因为UD
  • Linux下读写芯片的I2C寄存器

    要想在Linux下读写芯片的I2C寄存器 xff0c 一般需要在Linux编写一份该芯片的I2C驱动 xff0c 关于Linux下如何编写I2C驱动 xff0c 前一篇文章 手把手教你写Linux I2C设备驱动 已经做了初步的介绍 xff
  • linux centos 7上运行teamviewer与找不到ID问题处理办法

    以前在raspberryPi上搞过teamviewer xff0c 现在用了CentOS服务器 xff0c 搞了一个vpn xff0c 访问还有点问题 xff0c 时间紧张 xff0c 就先给teamviewer 而centos7 上安装也
  • 如何传集合型参数

    想传入查询参数到存储过程中 xff0c 但参数代表一个集合 不知该如何实现 首先是参数用什么类型 xff1f 然后是在PL SQL中查询语句的条件该如何写 xff1f 期望的SQL查询是类似这样的 xff1a select from aaa
  • Vue SSR Nuxt axios封装

    安装 npm install axios save span class copy code btn 复制代码 span 使用 nuxt config js 引入插件 xff0c 启动中间件 plugins span class hljs
  • 重新解读DDD领域驱动设计(一)

    回顾 十年前 xff0c 还未踏入某校时 xff0c 便听闻某学长一毕业就入职北京某公司 xff0c 月薪过万 对于一个名不见经传的小学院 xff0c 一毕业能拿到这个薪水还是非常厉害的 听闻他学生期间参与开发了一款股票软件 xff0c 股
  • ubuntu sudo apt-get update无法解析域名

    问题 sudo apt get update时提示如下 xff1a 然后cat etc resolv conf 查看dns server发现里面是空的 解决办法 xff1a 1 永久有效 sudo vi etc resolvconf res
  • IDEA 报错These modules have been removed from Maven stucture

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 当我们从IDEA中删除一个module后 xff0c 我再新建同名的module时发现提示 These modules have been removed from Mav
  • nginx: [emerg] BIO_new_file("/etc/nginx/ssl_key/server.crt") failed (SSL: error:02001002:syste

    Centos 7 5 nginx 43 web集群配置https报错 报错信息 root 64 lb01 conf d nginx t nginx emerg BIO new file 34 etc nginx ssl key server
  • 永久关闭swap分区

    参考文章 xff1a https blog 51cto com 6923450605400 735323 xff08 1 xff09 临时关闭swap分区 重启失效 swapoff a xff08 2 xff09 永久关闭swap分区 se
  • querySelector() 方法

    返回文档中匹配指定 CSS 选择器的一个元素 虽然IE8中没有getElementsByClassName 但可以用querySelector 代替 注意 xff1a querySelector 方法仅仅返回匹配指定选择器的第一个元素 如果
  • 《Programming in Lua 3》读书笔记(二十五)

    日期 xff1a 2014 8 11 Part The C API 29 User Defined Types in C 在之前的例子里 xff0c 已经介绍过如果通过用C写函数来扩展Lua 在本章 xff0c 将会介绍通过用C写新的类型来

随机推荐

  • EntityFramework

    How to Call StoreProcedure http www tudou com programs view 0WtDy50Hbzs target 61 blank If it not work see http stackove
  • HOOK技术的一些简单总结

    好久没写博客了 xff0c 一个月一篇还是要尽量保证 xff0c 今天谈下Hook技术 在Window平台上开发任何稍微底层一点的东西 xff0c 基本上都是Hook满天飞 xff0c 普通应用程序如此 xff0c 安全软件更是如此 xff
  • windows2000上如何跑MSN

    WINDOWS2000上一直可以跑MSN的 LP公司还在用可怜的2000 xff0d xff0d 在9月13日以前 xff0c 我就一直这样与LP MSN联系 但之后就不行了 xff0c 直到今天 xff0c LP就没能再登录MSN 兹事体
  • 30岁人生进度条_30岁前,人生可以靠努力,30岁后,人生更需要一些“觉醒”

    慈怀女子 偶然看到胡歌一位粉丝的留言 xff0c 触动很深 入行15年 xff0c 如今的胡歌 xff0c 已活成了百万粉丝心中的 灯塔 24岁之前 xff0c 胡歌的青春几乎是开挂的 高中起就拍广告 xff0c 迅速在上海广告界蹿红 大二
  • win10环境安装TensorFlow2.0 - 吴恩达视频-修复版

    文章整体参考吴恩达老师的视频 xff0c 见如下 https www bilibili com video BV19E411Y7Kw p 61 4 实际结果 xff1a 不可行 xff01 版本安装后1 1 0 xff01 本文提供解决方案
  • tensorflow2.0入门与实战(笔记) 独热编码与交叉熵损失函数

    百度的独热编码定义 独热编码即 One Hot 编码 xff0c 又称一位有效编码 xff0c 其方法是使用N位状态寄存器来对N个状态进行编码 xff0c 每个状态都有它独立的寄存器位 xff0c 并且在任意时候 xff0c 其中只有一位有
  • 树莓派基础信息

    默认的用户名 pi 默认的密码是 raspberry 如果SSH连接别拒绝 xff0c 可能要修改以下密码 xff0c 使用命令sudo passwd pi aptitude可以解决安装包依赖问题
  • ESP32+arduino开发基础信息

    开发环境准备 官方的开发环境配置指导 xff1a Installing Arduino ESP32 2 0 2 documentation 实测可用 xff0c 其中在IDE首选项中增加的URL xff0c development和stab
  • git常用命令汇总

    Git本地操作 git init初始化git库git add添加文件git rm删除文件git commit m 34 xxxx 34 提交修改 xff0c 并增加提交日志git status查看版本库状态git log查看近期提交记录gi
  • 移植python3到ARM平台的OK6410开发板

    1 下载 python3 2 2 的源码 源码下载地址 xff1a http www python org ftp python 3 2 2 Python 3 2 2 tgz xff08 1 xff09 在 Ubuntu 上必须安装同版本的
  • 串口通信校验方式(even,odd,space,mark) 分类: 开...

    无校验 xff08 no parity xff09 奇校验 xff08 odd parity xff09 xff1a 如果字符数据位中 34 1 34 的数目是偶数 xff0c 校验位为 34 1 34 xff0c 如果 34 1 34 的
  • alias 命令的用法/相对路径和绝对路径/cd命令/rmdir,mkdir 创建和删除命令/rm命令...

    alias 命令的用法 相对路径和绝对路径 cd命令 rmdir xff0c mkdir 创建和删除命令 rm命令 alias是用做别名用 如下 xff1a root 64 alex alias alias cp 61 39 cp i 39
  • HTTP基础认证Basic Authentication

    HTTP基础认证Basic Authentication Basic Authentication是一种HTTP访问控制方式 xff0c 用于限制对网站资源的访问 这种方式不需要Cookie和Session xff0c 只需要客户端发起请求
  • c语言中结构体对齐详解

    为什么要对齐 现代计算机中内存空间都是按照byte划分的 xff0c 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始 xff0c 但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问 xff0c 这就需要各种类型数据按照一
  • CAN总线基础和在linux下使用实战

    CAN总线基础和在linux下使用实战 CAN 是Controller Area Network 的缩写 有CANH和CANL两线 xff0c 即差分信号通信 当然设备芯片还会有电源和地等线 在总线空闲时 xff0c 所有的单元都可开始发送
  • C和C++的区别,有你不知道的

    c和c 43 43 可以说现在都是比较流行的 xff0c 但是两者到底有什么联系和区别吗 xff0c 这是学习c和c 43 43 最需要注意的 xff0c 不要把两者搞混了 xff0c 我们先开始就来看一下c和c 43 43 有什么联系 x
  • 详解摘要认证

    1 什么是摘要认证 摘要认证与基础认证的工作原理很相似 xff0c 用户先发出一个没有认证证书的请求 xff0c Web服务器回复一个带有WWW Authenticate头的响应 xff0c 指明访问所请求的资源需要证书 但是和基础认证发送
  • QT开发(二十八)——QT常用类(二)

    QT开发 xff08 二十八 xff09 QT 常用类 xff08 二 xff09 一 QDir 1 QDir 简介 QDir 提供对目录结构及其内容的访问 QDir 通过相对或绝对路径指向一个文件 2 QDir 成员函数 QDir 主要成
  • ubuntu c语言调用串口,ubuntu 下使用串口工具(呕心沥血整理调试成功)

    ubuntu 下使用串口工具 1 安装 sudo apt get install minicom 2 查看所有串口 ls dev tty 3 连接串口线 xff0c 查看正在使用的串口 grep tty 4 修改minicom配置 sudo
  • c调用c++ qt_【C/C++】qt库结构及示例

    QT库结构 Qt图形库是一个组织严谨的C 43 43 类库 xff0c 其结构如图所示 细说Qt库 Qt类库中包含了上百个类 xff0c 结构十分复杂 xff0c 上图展示了Qt 3 2类库的基本结构 Qt类库中的类可以分成两种类型 xff