【Qt】安装失误解决方案/信号和槽

一、Qt 5.7.0安装

Qt:  qt-opensource-windows-x86-msvc2013_64-5.7.0.exe

Addin:qt-vs-addin-1.2.5.exe

Visual Studio: Visual Studio 2013

刚开始安装结束之后,新建项目(没有任何改动),编译——一直失败

错误1:Qt   cannot find the executable

解决:项目保存路径中有中文

错误2:'cl' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

解决:去掉勾选“使用jom代替nmake”

扫描二维码关注公众号,回复: 5754992 查看本文章

二、信号和槽机制

Qt中信号和槽机制 <==> vs中的消息处理机制(消息和消息相应函数)

  • 信号:声明了信号的对象,当其状态改变时,信号就由该对象发射出去,而且该对象只负责发送信号,它不知道另一端是谁            在接收这个信号。
  • 槽:槽用于接收和处理信号,一个槽并不知道是否有任何信号与自己相连接

信号:

signals关键字:信号的声明(在类的头文件中)

emit关键字:发送信号

1.所有的信号声明都是公共的,所以Qt规定不能在signals前面加public,private, protected。
2.所有的信号都没有返回值,所以返回值都用void。
3.所有的信号都不需要定义。
4.必须直接或间接继承自QOBject类,并且开头私有声明包含Q_OBJECT。
5.当一个信号发出时,会立即执行其槽函数,等待槽函数执行完毕后,才会执行后面的代码,如果一个信号链接了多个槽,那么会等所有的槽函数执行完毕后才执行后面的代码,槽函数的执行顺序是按照它们链接时的顺序执行的。
6.在链接信号和槽时,可以设置链接方式为:在发出信号后,不需要等待槽函数执行完,而是直接执行后面的代码。
7.发出信号使用emit关键字。
8.信号参数的个数不得少于槽参数的个数。



作者:小豆君的干货铺
链接:https://www.jianshu.com/p/e96c9f66da80
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

信号函数:

  1. 函数返回值是void类型
  2. 开发人员只能声明、不能实现信号函数
  3. 只有包含一个信号函数那个类及其派生类才能使用该信号函数
  4. 信号函数的参数个数、类型由开发人员设定,这些参数的职责是封装类的状态信息,并将这些信息传递给槽函数
  5. 只有QObject及其派生类才可声明信号函数

 

槽:

槽函数和普通的C++成员函数一样,可以被正常调用

唯一的特殊性就是很多信号可以与其相关联  

与其关联的信号被发射时,这个槽就会被调用  

槽函数可以是 public、protected、private

 信号与槽的关联:

通过调用QObject::connect()函数可以绑定一个信号函数和一个槽函数

connect( sender, SIGNAL ( signal_func() ), receiver, SLOT( slot_func()) )

  • sender及receiver 是指向对象的指针,前者指向发射对象,后者指向处理对象
  • signal_func以及slot_func分别是这两个对象中定义的信号函数和槽函数。

connect函数的作用:将sender对象中的信号SIGNALreceiver中的SLOT槽函数联系起来。当指定信号SIGNAL时必须使用QT的宏SIGNAL(),当指定槽函数时必须使用宏SLOT()。如果发射者与接收者属于同一个对象的话,那么在connect调用中接收者参数可以省略。

实际上的静态创建和动态创建

静态创建:在ui中拖动空间,在需要设置的控件中设置槽。

private slots ==> 声明槽函数 

动态创建:不用在ui上放置控件,而是直接在代码中添加创建。

信号:Button 按钮

槽:on_button_clicked()

dialog.h头文件

dialog.cpp文件

槽函数:

按钮的作用:点击按钮之后文字从“快来点我”变成“你真厉害”

动态创建中出现的错误: LNK2019: 无法解析的外部符号

原因:定义了信号、槽函数、connect函数,但是忘记实现了槽函数

解决:实现槽函数(dialog.cpp)

猜你喜欢

转载自blog.csdn.net/qq_42417182/article/details/88205882