c调用c++ qt_【C/C++】qt库结构及示例
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库结构及示例相关推荐
- 【Qt】qt库结构及示例
QT库结构 Qt图形库是一个组织严谨的C++类库,其结构如图所示 细说Qt库 Qt类库中包含了上百个类,结构十分复杂,上图展示了Qt_3.2类库的基本结构. Qt类库中的类可以分成两种类型: 一种是直 ...
- SmartDeblur代码剖析——调用QT库
最近配置好了QT环境,新建QT工程运行实例成功,很是欢喜啊. 但头疼的是需要在控制台工程下转成C++源码,楼主真心想凭借自己的本事把QT中的函数逐一替代,无奈该实例程序实属庞大,牵扯到QT中的多线程和 ...
- 【OPENCV】运行opencv时找不到Qt库
问题描述: 这里复制一下问题,来源:https://www.cnblogs.com/guiguzhixing/p/6347602.html g++ -o opencv_test opencv_test ...
- 图像工程课程设计 基于 OpenCV 、 Qt 库实现的图像处理软件 大学编程作业(TUST 天津科技大学 2023年)
基于 OpenCV . Qt 库实现的图像处理软件 目录 基于 OpenCV . Qt 库实现的图像处理软件 一.项目简介 二.项目要求 三.项目源码 四.交流学习 图像处理工具说明文档 基于 Ope ...
- 找不到QtDir变量的解决办法, 同时不需要经过编译就可以使用qt 库
如果是直接从网上下载的dll文件则不需要编译就可以直接用,如果提示找不到QtDir变量,则直接在系统变量加上即可 同时重新启动计算机,使之生效. 然后把dll文件拷入system32目录下,同时把证可 ...
- c调用python第三方库_用 Python ctypes 来调用 C/C++ 编写的第三方库
看到一篇简洁的文章--如何用Python ctypes调用C++(ctypes调用C没这么多麻烦事),不敢独享... 如果需要用 Python 调用 C/C++ 编写的第三方库(这些第三方库很可能就是 ...
- ios framework 调用第三方 framework_Python基础:标准库和常用的第三方库
Python的标准库有: 名称 作用 datetime 为日期和时间处理同时提供了简单和复杂的方法. zlib 直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 ta ...
- python qt库,用于 Python 的高级 GUI 库(Qt 和 PyQt)(1)Unix系统 -电脑资料
Qt 工具箱是一个使用广泛的跨平台 GUI 工具箱,可用于 Windows .Linux.Mac OSX 和许多手持平台, Qt 工具箱是一个使用广泛的跨平台 GUI 工具箱,可用于Windows.L ...
- windox与ubuntu18.04安装clion及导入qt库
windox: http://download.qt.io/archive/qt/ 1. qt安装目录 F:\qt 1.1 qt库所在目录: 针对第一种导入库文件的方法 CMakeLists.txt ...
最新文章
- visual MySQL 教程_MySql轻松入门系列——第二站 使用visual studio 对mysql进行源码级调试...
- 王式安概率论与数理统计基础课手写笔记-第一章概率与事件-第二章随机变量及其分布
- 如何从Windows远程上传文件到Linux(例如CentOS 7)
- 30 | 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?
- Entity Framework 6 Alpha 3为Code First提供对存储过程支持,并提供连接恢复功能
- LeetCode 5380. 数组中的字符串匹配
- php面试 数组最大数,PHP 十万数字不同数组取最大的5个 (经典面试题topK) (原)
- mysql中表示金钱的类型
- SQL server 远程连接 1326错误
- 一、(3) 结巴分词
- Linux下为Calibre书库打中文目录名与文件名补丁
- 戴尔服务器虚拟光驱,SupportAssist
- linux硬盘组合为raid0挂载
- 调停者模式 java_《JAVA与模式》之调停者模式
- AR/AP - 借项通知单和贷项通知单的区别
- 我的2016——程序员年到三十,工作第四年
- C++ 实验3-2本月有几天?
- 使用Excel VBA制作成绩统计图----(嵌入模式)
- Arangodb——操作案例一
- 请说说你对互联网行业的理解。
热门文章
- linux查找所有字文件,Linux查找含有某字符串的所有文件
- 一个列中多行求和_Excel 用选项求和及用快捷键快速求和,同时对多单元格求和...
- md文件生成Java代码_Beetlsql自定义生成entity,mapper,md代码
- matlab 高斯迭代代码_用Matlab编写你的第一个有限元_《数值计算与程序设计》系列课程...
- python自动化测试——测试报告以附件形式发送邮件
- 阿里云Tech Insight 企业迁云实战专场强势来袭!
- Spring Boot☞HelloWorld开篇
- 福禄克中国区高管:高精度和应用性是未来测试主要发展方向
- mybatis 基础理解
- ps、grep和kill联合使用杀掉进程(转)