qt基础(嵌入式用户图形界面编程)
Ubuntu下嵌入式Qt开发环境配置全攻略

Ubuntu下嵌入式Qt开发环境配置全攻略本文以友善之臂的Mini6410嵌入式开发板为目标板,介绍ubuntu 12.04系统下,配置嵌入式Qt开发工具的过程。
本文中介绍的工具、大部分步骤和脚本来自开发板附带资料光盘,但其默认配置环境为老旧的Fedora 9.0,在ubuntu中配置过程已需要修正。
一、背景众所周知Qt是一个跨平台的开发工具,与本文相关的分支有3个,分别是Linux下的Qt桌面版(基于X Window),嵌入式桌面环境Qtopia(Qt Extended)和嵌入式基础类库Qt Embedded。
嵌入式桌面版拥有集成开发工具Qt Creator,方便进行Qt 程序的设计,默认配置用于开发桌面程序,进行交叉编译设置(有时间待后文详述)后,可以直接编译嵌入式程序。
Qt Embedded也称Qt/E,是运行于嵌入式Linux的Qt基础类库,目前最高版本为4.8(不确定)。
它的图形界面直接工作于Frame Buffer 上,绕过了窗口管理系统,具有较高的效率,适于嵌入式环境。
Qtopia是一个嵌入式桌面环境,以Qt Embedded(在某些版本中称Qtopia Core)为基础,在后期改名为Qt Extended。
它提拥有一个桌面,并供了手机/PDA中常用的基本功能软件(如电话本等等),在4.4.3后官方停止开发(或改由开源社区维护)。
不同的开发目标应当选择不同的开发工具和环境,如果读者不开发桌面程序,也不需要Qt Creator(自己写makefile),可以不用安装桌面版,但装上对后续配置还是有一定方便作用的。
对嵌入式开发者来说,如果仅仅开发单独的图形界面程序,不需要嵌入式桌面的话,只使用Qt/E即可,没必要使用过时的Qtopia。
友善之臂开发板默认的Qtopia环境是2.2,已经与4.x的Qt/E库不兼容,除了演示自带程序外,对开发而言几乎不堪用。
开发板还提供了Qt Extended 4.4.3,但这个环境提供的是一个诺基亚功能机的界面,基本上也只能供学习研究使用了。
qt编程快速入门 例程

qt编程快速入门例程Qt是一种跨平台的C++应用程序开发框架。
它提供了一套丰富的库和工具,方便开发者创建功能强大的图形界面应用程序。
本文将带您快速入门Qt编程,并提供一些例程帮助您更好地理解。
首先,我们需要确保您已经安装了Qt开发环境。
您可以从官方网站上下载并安装Qt Creator集成开发环境,它包含了Qt的库和工具。
安装完成后,打开Qt Creator,并创建一个新的Qt项目。
在新项目的创建过程中,您可以选择使用Qt Widgets或Qt Quick 来构建应用程序的用户界面。
Qt Widgets是一种基于传统的窗口和控件的开发方式,而Qt Quick则是一种基于QML(Qt Markup Language)的更现代化的开发方式。
我们将选择Qt Widgets作为例程的开发方式。
创建完项目后,Qt Creator会自动生成一个主窗口类,并默认提供了一个简单的用户界面。
您可以在设计模式下使用Qt Creator的可视化编辑器来修改界面。
例如,您可以在窗口中添加按钮、文本框或标签等控件,然后使用拖拽和调整大小的方式进行布局。
除了可视化编辑器,您还可以使用Qt的信号与槽机制来实现控件间的交互。
通过在代码中声明信号和槽,并使用connect函数进行连接,您可以实现按下按钮时执行特定的操作,或者在文本框中输入内容时更新其他控件的显示内容。
在编写应用程序的逻辑代码时,您可以使用Qt的C++ API来访问各种功能。
例如,您可以使用QFile类来读写文件,使用QNetworkAccessManager类来进行网络请求,或者使用QSqlDatabase 类来连接数据库。
Qt提供了丰富的类和函数,可以帮助您轻松地完成各种任务。
此外,Qt还支持国际化和本地化。
您可以使用Qt的翻译系统来实现多语言支持,使您的应用程序能够运行在不同的语言环境下。
通过在代码中添加翻译文件,并使用tr函数进行文本的翻译,您可以轻松地实现多语言切换的功能。
图形界面Qt程序设计

图形界面Qt程序设计图形界面Qt程序设计是一种基于Qt开发平台的图形用户界面(GUI)程序设计方法。
Qt是一种跨平台的应用程序开发框架,具有丰富的功能库和工具,可用于开发多种类型的应用程序,包括桌面应用、移动应用和嵌入式应用等。
在程序设计中,图形界面是用户与计算机进行交互的重要方式,能够使用户通过直观、可视化的界面完成各种操作和任务。
下面将介绍图形界面Qt程序设计的基本原理、工具和应用。
一、图形界面Qt程序设计的基本原理Qt框架采用了C++编程语言,通过使用特殊的宏和关键字,扩展了C++语法,增加了一系列的类和数据结构,用于实现图形用户界面的各种功能。
基于Qt框架进行图形界面设计时,通常需要完成以下几个步骤:1.创建主窗口:主窗口是应用程序的最顶层窗口,所有其他的窗口和控件都是主窗口的子窗口。
在创建主窗口时,需要选择合适的窗口类型,如对话框、工具栏、菜单栏等。
3.布局管理:布局管理器用于确定控件在主窗口中的位置和大小。
Qt提供了多种布局管理器,包括水平布局、垂直布局、栅格布局等。
通过使用布局管理器,可以实现自动排列和调整控件的功能。
4.事件处理:事件是用户与界面交互的一种形式,如鼠标点击、键盘按键等。
在Qt中,每个控件都可以处理一系列的事件,通过重写事件处理函数,可以实现对事件的响应和处理。
5.信号与槽机制:信号和槽是Qt中的一种重要机制,用于实现对象间的通信。
信号是事件的发出者,槽是事件的接收者。
通过连接信号与槽,可以实现不同对象之间的交互和数据传输。
二、图形界面Qt程序设计的工具三、图形界面Qt程序设计的应用图形界面Qt程序设计在各个领域都有广泛的应用,可以用于开发桌面应用、移动应用和嵌入式应用等。
其中,桌面应用是最常见的一种应用形式。
通过使用Qt框架,可以方便地创建各种类型的桌面应用,如办公软件、图形图像处理软件、媒体播放器等。
移动应用是近年来快速发展的一个领域,Qt也提供了相应的解决方案。
qt嵌入式mqtt编程 -回复

qt嵌入式mqtt编程-回复嵌入式系统是一种特殊的计算机系统,它通常用于控制、监控和实时处理任务。
与传统的计算机系统不同,嵌入式系统往往具有严格的资源限制、低功耗和高可靠性的要求。
因此,对于嵌入式系统而言,选择一个合适的网络通信协议非常重要。
在这篇文章中,我们将重点介绍一种适用于嵌入式系统的MQTT(Message Queuing Telemetry Transport)协议,以及如何在QT 中使用MQTT 进行编程。
一、什么是MQTT 协议?MQTT 是一种基于发布/订阅模式的消息传输协议,它可以在TCP/IP 网络上实现低带宽、低开销和可靠的数据传输。
MQTT 协议通常被嵌入式系统和物联网应用中广泛使用,因为它非常适合资源有限的设备。
MQTT 协议的核心思想是将设备之间的通信通过一个中间代理进行,该代理被称为MQTT 代理或MQTT 服务器。
设备可以通过“发布”消息将数据发送到MQTT 服务器,其他设备通过“订阅”主题来接收这些消息。
这种发布/订阅模式使得设备之间的通信变得灵活且解耦。
二、为什么选择MQTT 协议?在嵌入式系统中,选择一个合适的通信协议非常关键。
从性能和资源消耗的角度考虑,MQTT 协议具有以下优势:1. 轻量级: MQTT 协议非常轻量级,占用较少的硬件资源和网络带宽。
这使得它非常适合在嵌入式系统和物联网设备上运行。
2. 可靠性: MQTT 协议具有数据确认机制,可以确保消息的可靠传输。
即使在不稳定的网络环境下,数据也能够得到正确传输。
3. 异步通信: MQTT 协议支持异步通信模式,设备之间可以以非阻塞的方式进行通信。
这有助于提高系统的响应速度和并发性能。
4. 安全性: MQTT 协议支持使用SSL/TLS 进行数据加密和身份验证,保证数据的安全传输。
三、在QT 中使用MQTT 进行编程QT 是一个跨平台的C++ 应用程序开发框架,具有丰富的图形界面和网络编程功能。
下面将介绍如何在QT 中使用MQTT 进行编程。
Qt嵌入式开发环境搭建

Qt嵌入式开发环境搭建一、Qt版本介绍按照不同的图形界面来划分,分为四个版本:1、Win32版:适用于windows平台2、X11版:适用于各种X系统的Linux和Unix平台3、Mac版:适用于苹果的MacOS4、Embedded版:适用于具有帧缓冲(Frame buffer)的linux 平台Qtopia是基于qt开发的一个软件平台,Qtopia是构建于Qt/E 之上的一系列应用程序,在这个平台上我们可以开发各种应用程序。
2008年,TrollTech公司被Nokia收购后,Qtopia被重新命名为Qt Extended。
Nokia在推出了Qt Extended的最新版Qt Extended 4.4.3之后的2009年3月3日,决定停止Qt Extended的后续开发,转而全心投入Qt的产品开发,并逐步会将一部分Qt Extended 的功能移植到Qt的开发框架中。
所以总的来说,QT也就三种:面向桌面的x11、面向嵌入式的Qt/E、以及面向嵌入式带各种应用程序的Qtopia桌面系统二、比如是Qt的各种版本介绍1、Qt的安装程序(包含了QtCreator,QtAssistant)Windows--x86--msvc2012_64_opengl :表示window平台,msvc2012可以与VS2012进行结合使用,64位应用程序,要求电脑装的是64位操作系统;opengl表示支持openGL的绘图模式Windows--x86--mingw48_opengl :window平台下的mingw48编译器进行编译。
2、Qt的库的源码包3、Qt安装包的下载网址:如果想下载Qt的以前版本,可以在上面网址的最下面的一栏有个Archive for old versions ,进去就可以下载qt的以前版本了。
三、嵌入式Qt开发环境的搭建1.预备知识,嵌入式qt开发环境的安装方法很多,qt的版本也很多。
有点让人不知所措,不知该按哪种方法去安装。
Qt嵌入式LinuxGUI研究报告与实现

Qt/E 的嵌入式Linux GUI 研究与实现摘要:嵌入式GUI(Graphical User Interface 〉为嵌入式系统提供了一种应用于特殊场合的人机交互接口(Man-MachineInterface 〉。
由于嵌入式系统本身的硬件资源有限,要求嵌入式不同的硬件条件和使用需求。
本文首先介绍了嵌入式LinuxGUI 目前的发展状况及各自的特点,然后针对目前主流的嵌入式 Qt/Embedded ,阐述其图形引擎的实现。
最后,结合三星公司 具体平台上的实现和应用。
关键字:ARM9 Linux 交叉编译 嵌入式 GUI Qt Qt/Embedded Qtopia FrameBuffer Signals/SlotsResearch and Realization of Embedded Linux GUI based on Qt/EmbeddedTang Wei, Li Qiang(College of Computer Science, HangZhouDianZiUniversity, Hang Zhou, 310018, China>Abstract: The Embedded GUI(Graphical User Interface>provides a Man-Machine Interface used in special occasions for Embedded Systems. Since the embedded system itself limited hardware resources, whose requirements of embedded GUI is highly portable and can be cut of, so as to adapt to the conditions and use different hardware requirements. This article firstly introduces the current development of embedded Linux GUI and their own characteristics, and then for the current mainstream embedded GUI system--Qt/Embedded,described the realization of its graphics engine. What ' more, it Combined with Samsung S3C2410 development board, introduced the achieving and application on a specific platform for embedded GUI system .Keywords: ARM9 Linux Cross-Compiling Embedded GUI Qt Qt/Embedded Qtopia FrameBuffer Signal/Slots1引言由于嵌入式系统的特殊性,它一般不会建立在庞大的操作系统以及GUI 之上,女口 Windows 或XWindows,它对实时性的要求非常高,对GUI 的要求更高。
qt 基础知识梳理

qt 基础知识梳理QT基础知识梳理QT是一种跨平台的C++应用程序开发框架,通过QT,开发者可以方便地编写可在不同操作系统上运行的应用程序。
本文将梳理一些QT的基础知识,帮助读者了解QT的核心概念和常用功能。
一、QT概述QT是由挪威的Trolltech公司开发的一种C++应用程序开发框架,其目标是提供一种简单、易用、跨平台的开发环境。
QT采用了一种特殊的信号与槽机制,使得开发者可以方便地处理对象之间的事件和通信。
QT还提供了丰富的图形界面控件和工具类,以及强大的跨平台支持,使得开发者可以快速地开发出高质量的应用程序。
二、QT的核心概念1. 对象和类:在QT中,所有的组件都是对象,对象是类的实例。
类定义了对象的属性和行为,开发者可以通过继承和多态等方式来扩展和定制类的功能。
2. 信号与槽机制:信号与槽是QT的核心机制,它通过一种松耦合的方式实现了对象之间的通信。
一个对象可以发送信号,而其他对象可以接收这个信号并作出相应的反应。
开发者可以通过connect 函数将信号和槽函数连接起来,实现对象之间的交互。
3. 事件驱动编程:QT采用了事件驱动的编程方式,当用户执行某个操作时,系统会生成相应的事件,然后QT会将事件发送给相关的对象,对象再根据事件的类型和参数来执行相应的操作。
4. 常用的QT类:QT提供了丰富的类库,包括图形界面控件、文件操作、网络通信、数据库访问等功能。
常用的类有QWidget、QLabel、QPushButton、QLineEdit、QSpinBox等,开发者可以根据自己的需求选择合适的类来构建界面和实现功能。
三、QT的常用功能1. 图形界面开发:QT提供了丰富的图形界面控件和布局管理器,开发者可以通过拖拽和设置属性的方式来构建界面。
同时,QT还提供了强大的绘图和动画功能,可以实现各种复杂的图形效果。
2. 事件处理:QT中的事件可以分为系统事件和自定义事件。
系统事件包括鼠标点击、键盘输入等用户操作,开发者可以通过重写事件处理函数来响应这些事件。
Linux下Qt编程入门

o QTDIR -- 你安装 Qt 的路径
o PATH -- 用来定位 moc 程序和其它 Qt 工具
o MANPATH -- 访问 Qt man 格式帮助文档的路径
o LD_LIBRARY_PATH -- 共享 Qt 库的路径
示例:
在.profile 文件(如果你的 shell 是 bash、ksh、zsh 或者 sh)中,添加下面这些行:
在.login 文件(如果你的 shell 是 csh 或者 tcsh 的情况下),添加下面这些行: setenv QTDIR /usr/local/qt setenv PATH $QTDIR/bin:$PATH setenv MANPATH $QTDIR/man:$MANPATH setenv LD_LIBRARY_PATH $QTDIR/lib:$LD_LIBRARY_PATH
做完这些之后,你需要重新登录,或者在继续工作之前重新指定你的配置文件,这 样至少$QTDIR 被设置了。否则的话安装程序就会给出一个错误信息并且不再进行 下去了 安装你的许可证文件。对于自由版本,你不需要一个许可证文件。对于专业版和企业版, 你就需要安装一个和你的发行版一致的许可证文件。
编译 Qt 库,并且连编实例程序、教程和工具(比如 Qt 设计器),就像下面这样。
• MS/Windows - 95、98、NT 4.0、ME、XP、2000、2003(新版 Qt 兼容.NET) • Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX
和其它很多 X11 平台
• Macintosh - Mac OS X • Embedded - 有帧缓冲(framebuffer)支持的 Linux 平台。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、嵌入式图形系统简介
•
•
1.1 Linux图形系统的发展史
图形界面并不是linux 的一部分,linux只是 一个基于命令行的操作系统。 linux和Xfree的关系就相当于当年的DOS和 windows3.0 一样,windows3.0 不是独立的操 作系统,它只是 DOS的扩充,是DOS下的应 用程序级别的系统,不是独立的操作系统, 同样XFree只是linux下的一个应用程序 而已 ,不是系统的一部分。
3 QTOPIA
• 3.1 简介
3 QTOPIA
• 3.2 QTE和Qtopia开发模型
QTOPIA or Other Application QT API QT/X11 QT/Embedded Xlib X Window Server Frame-buffer Linux Kernel
课堂回顾
Signal和Slot的连接(2/2)
在使用connect()函数进行来接的时候,还需要用到 SIGNAL( )和SLOT( )这两个宏,使用方法如下:
信号与插槽的连接方式
QObject类
QObject是Qt类体系的唯一基类,是Qt各种功能的源头 活水,就象MFC中的CObject和Dephi中的TObject 对象树:QObject在对象树中组织它们自己。当你以另 外一个对象作为父对象来创建一个QObject时,它就被 添加到父对象的children()列表中,并且当父对象被删 除的时候,它也会被删除。这种机制很好的适合了图形 用户界面应用对象的需要。 事件:事件是由窗口系统或qt本身对各种事务的反应而 产生的。当用户按下、释放一个键或鼠标按钮,一个键 盘或鼠标事件被产生;当窗口第一次显示,一个绘图事 件产生,从而告知最新的可见窗口需要重绘自身。大多 数事件是由于响应用户的动作而产生的,但还有一些, 比如定时器等,是由系统独立产生的。
Signal和Slot的声明(1/2)
在Qt程序设计中,凡是包含signal和slot的类中都要 加上Q_OBJECT的定义
Signal和Slot的声明(2/2)
signal的发出一般在事件的处理函数中,利用 emit发出signal,在下面的例子中在在事件处 理结束后发出signal
Signal和Slot的连接(1/2)
1.3.4 OpenGUI
• OpenGUI基于一个用汇编实现的x86图形 内核,提供了一个高层的C/C++图形/窗口接 口,它的资源消耗小,可移植性差,不支持 多进程。
1.3.5 主流的Linux窗口系统
2、QT/E
• Qt/Embedded(简称QtE)是一个专门 为嵌入式系统设计图形用户界面的工具 包。Qt是挪威Trolltech软件公司的产品, 它为各种系统提供图形用户界面的工具 包,QtE就是Qt的嵌入式版本。
1.3.3 MiniGUI
• MiniGUI是由北京飞漫软件技术有限公司主 持的一个自由软件项目(遵循GPL条款),其目标 是为基于Linux的实时嵌入式系统提供一个轻量 级的图形用户界面支持系统。 • MiniGUI为应用程序定义了一组轻量级的窗 口和图形设备接口。利用这些接口,每个应用程 序可以建立多个窗口,而且可以在这些窗口中绘 制图形。用户也可以利用MiniGUI建立菜单、按 钮、列表框等常见的GUI元素。
2.1 QT/E 特点
• 2.2.5 运行需要资源少、功能强大
• 相对X窗口下的嵌入解决方案而言, • Qt/Embedded只要求一个较小的存储空间( Flash)和内存。Qt/Embedded可以运行在不 同的处理器上部署的Linux系统,只要这个系 统有一个线性地址的缓冲帧并支持C++的编 译器。
Qt-embedded-3.1.1 Qtopia-free-1.7.0
5 QTE开发关键技术
1. QT对象模型 元对象系统 信号和插槽 2. QObject类 对象树 事件处理
元对象系统
是一个C++扩展,使得QT更适合真正 的组件GUI编程 使用元编译器moc产生能被标准C++编 译器访问的附加C++代码 带有moc预编译器的C++基本上提供了 面向对象的灵活性,并保持了C++的执行 效率和扩展性
2.1 QT/E 特点
• 2.2.2 资源丰富
• • • • trolltech 的主页:http://www. / 支持匿名访问的FTP: ftp:// 新闻组服务器: 非官方的Qt 文档中文翻译小组: /qt/index.html
2.1 QT/E 特点
• 2.2.6 功能可裁减 • Qt/Embedded 提供了大约200个可配置的 特征
3 QTOPIA
• 3.1 简介 • Qtopia是基于 Qt编写的一个用于手持设 备的 用户信息管理软件,它集成了很多实 用的程序。 • 市面上买到的预装 linux操作系统的 arm9开发版,开机后看到的图形界面多是 qtopia。
QWidget
QWidget类是所有用户接口对象的基类, 它继承了QObject类的属性。组件是用户 界面的单元组成部分,它接收鼠标、键盘 和其它从窗口系统来的事件,并把它自己 绘制在盘屏幕上 QWidget类有很多成员函数,但一般不直 接使用,而是通过子类继承来使用其函数 功能。如,QPushButton、QlistBox等都 是它的子类
对象树
6 实例一
• 一、代码编辑 • 二、程序编译
• #include <qapplication.h>
• • • • • • • • • • • #include <qpushbutton.h> int main(int argc, char ** argv) { QApplication a(argc, argv); QPushButton hellobtn("Hello world!", 0); hellobtn.resize(100, 20); a.setMainWidget(&hellobtn); hellobtn.show(); return a.exec();
• • 1.2 嵌入式图形系统的发展史
1. 早期嵌入式系统功能简单,对图形用户界面 需求并不是太大。而且当时的图形系统对硬 件要求太高,在嵌入式上实现几乎没有可能。 2. 后来,应市场需求产生一些高级GUI工具包, 使得嵌入式linux下的图形开发成为可能,而 且易于编写出更好、更漂亮的界面。
1、嵌入式图形系统简介
•
1.3.2 Microwindows
• Mirowindows是嵌入式系统中广为使用 的一种图形用户接口,其官方网站是: 。这个项目的 早期目标是在嵌入式Linux平台上提供和普 通个人电脑上类似的图形用户界面。 • MicroWindows,其主要特色在于提供 了C/S体系结构,同时也提供了相对完善的 图形功能。但却无任何硬件加速能力,图形 引擎中也存在着许多未经优化的低效算法。
• 1. 2. 3. 4. 5. 1.3 常用的几种嵌入式GUI工具包 紧缩的 X Window 系统 MicroWindows MiniGUI OpenGUI Qt/ Embedded
1.3.1 TinyX
• TinyX,是标准X-Windows在嵌入式系 统的小巧实现,作为一个图形环境,XWindows是成功的,但由于在体系接口 上的原因,限制了它对游戏、多媒体的 支持能力。
嵌入式用户图形界面编程
嵌入式用户图形界面编程
课程目的
1. 了解嵌入式图形系统 2. 掌握QT/E开发环境、关键技术 3. 通过实例熟悉基于Qt/E的嵌入式 G 1.1 Linux图形系统的发展史
•
linux本身没有图形界面, linux现在的 图形界面的实现只是linux下的应用程 序实现的。
事件运行机制
QApplication
QApplication和QWidget都是QObject类 的子类 QApplication类负责GUI应用程序的控制 流和主要的设置,它包括主事件循环体, 负责处理和调度所有来自窗口系统和其他 资源的事件,并且处理应用程序的开始、 结束以及会话管理,还包括系统和应用程 序方面的设置。对于一个应用程序来说, 建立此类的对象是必不可少的
• 1,QT 与 QT/E 最大的不同? • 2, QTOPIA与QT的关系? • 3,众多嵌入式图形开发库中,为什么大 多数人选择QT/E?
4 QTE开发环境搭建
宿主机移植所需工具及环境变量声明:
工具软件 Qt-x11-3.1.1 描述 Qvfb-虚拟帧缓存工具 Uic-用户界面编辑器 Designer Qt 图形设计器 Qt库支持 libqte.so 应用程序开发包 桌面环境
2、QT/E
• 注意:QT 与 QT/Embedded 的区别 •
2、QT/E
•
2、QT/E :QT类库架构
•
2.1 QT/E 特点
• 2.1.1 跨平台 • 可支持的平台包括:
• ◆ MS/Windows 95、Windows 98、WindowsNT 4.0、Windows 2000、Windows XP; • ◆ Unix/X11 Linux、Sun Solaris、HP-UX、Compaq True64Unix、 IBM AIX、SGI IRIX • 和很多其它X11 平台; • ◆ Macintoshi Mac OSX; • ◆ 嵌入式的,包含有FramBuffer 的Linux 平台。
信号和插槽
在Qt程序中,利用信号(signal)和插槽( slot)机制进行对象间的通信
事件处理的方式也是回调 当对象状态发生改变的时候,发出signal通知所 有的slot接收signal,尽管它并不知道哪些函数定义 了slot,而slot也同样不知道要接收怎样的signal