QT库结构

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

细说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对象中的。

示例效果

工程源码/*

*功能:滑动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引进的一种处理机制,信号可以被理解为一个对象发出的事件请求,槽是处理信号的函数。

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

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

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

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

  1. 【Qt】qt库结构及示例

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

  2. SmartDeblur代码剖析——调用QT库

    最近配置好了QT环境,新建QT工程运行实例成功,很是欢喜啊. 但头疼的是需要在控制台工程下转成C++源码,楼主真心想凭借自己的本事把QT中的函数逐一替代,无奈该实例程序实属庞大,牵扯到QT中的多线程和 ...

  3. 【OPENCV】运行opencv时找不到Qt库

    问题描述: 这里复制一下问题,来源:https://www.cnblogs.com/guiguzhixing/p/6347602.html g++ -o opencv_test opencv_test ...

  4. 图像工程课程设计 基于 OpenCV 、 Qt 库实现的图像处理软件 大学编程作业(TUST 天津科技大学 2023年)

    基于 OpenCV . Qt 库实现的图像处理软件 目录 基于 OpenCV . Qt 库实现的图像处理软件 一.项目简介 二.项目要求 三.项目源码 四.交流学习 图像处理工具说明文档 基于 Ope ...

  5. 找不到QtDir变量的解决办法, 同时不需要经过编译就可以使用qt 库

    如果是直接从网上下载的dll文件则不需要编译就可以直接用,如果提示找不到QtDir变量,则直接在系统变量加上即可 同时重新启动计算机,使之生效. 然后把dll文件拷入system32目录下,同时把证可 ...

  6. c调用python第三方库_用 Python ctypes 来调用 C/C++ 编写的第三方库

    看到一篇简洁的文章--如何用Python ctypes调用C++(ctypes调用C没这么多麻烦事),不敢独享... 如果需要用 Python 调用 C/C++ 编写的第三方库(这些第三方库很可能就是 ...

  7. ios framework 调用第三方 framework_Python基础:标准库和常用的第三方库

    Python的标准库有: 名称 作用 datetime 为日期和时间处理同时提供了简单和复杂的方法. zlib 直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 ta ...

  8. python qt库,用于 Python 的高级 GUI 库(Qt 和 PyQt)(1)Unix系统 -电脑资料

    Qt 工具箱是一个使用广泛的跨平台 GUI 工具箱,可用于 Windows .Linux.Mac OSX 和许多手持平台, Qt 工具箱是一个使用广泛的跨平台 GUI 工具箱,可用于Windows.L ...

  9. windox与ubuntu18.04安装clion及导入qt库

    windox: http://download.qt.io/archive/qt/ 1. qt安装目录 F:\qt 1.1  qt库所在目录: 针对第一种导入库文件的方法 CMakeLists.txt ...

最新文章

  1. visual MySQL 教程_MySql轻松入门系列——第二站 使用visual studio 对mysql进行源码级调试...
  2. 王式安概率论与数理统计基础课手写笔记-第一章概率与事件-第二章随机变量及其分布
  3. 如何从Windows远程上传文件到Linux(例如CentOS 7)
  4. 30 | 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?
  5. Entity Framework 6 Alpha 3为Code First提供对存储过程支持,并提供连接恢复功能
  6. LeetCode 5380. 数组中的字符串匹配
  7. php面试 数组最大数,PHP 十万数字不同数组取最大的5个 (经典面试题topK) (原)
  8. mysql中表示金钱的类型
  9. SQL server 远程连接 1326错误
  10. 一、(3) 结巴分词
  11. Linux下为Calibre书库打中文目录名与文件名补丁
  12. 戴尔服务器虚拟光驱,SupportAssist
  13. linux硬盘组合为raid0挂载
  14. 调停者模式 java_《JAVA与模式》之调停者模式
  15. AR/AP - 借项通知单和贷项通知单的区别
  16. 我的2016——程序员年到三十,工作第四年
  17. C++ 实验3-2本月有几天?
  18. 使用Excel VBA制作成绩统计图----(嵌入模式)
  19. Arangodb——操作案例一
  20. 请说说你对互联网行业的理解。

热门文章

  1. linux查找所有字文件,Linux查找含有某字符串的所有文件
  2. 一个列中多行求和_Excel 用选项求和及用快捷键快速求和,同时对多单元格求和...
  3. md文件生成Java代码_Beetlsql自定义生成entity,mapper,md代码
  4. matlab 高斯迭代代码_用Matlab编写你的第一个有限元_《数值计算与程序设计》系列课程...
  5. python自动化测试——测试报告以附件形式发送邮件
  6. 阿里云Tech Insight 企业迁云实战专场强势来袭!
  7. Spring Boot☞HelloWorld开篇
  8. 福禄克中国区高管:高精度和应用性是未来测试主要发展方向
  9. mybatis 基础理解
  10. ps、grep和kill联合使用杀掉进程(转)