找回密码
 立即注册
收起左侧

Connect函数的一些语法问题

4
回复
5711
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2019-10-10 21:33:26 显示全部楼层 |阅读模式
1Qter豆
在书中看到了这么一句

  connect(action, SIGNAL(getText(QString)), this, SLOT(setText(QString)))
然后去查了下connect的定义
static QMetaObject::Connection

connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);
然后有了如下疑问


getText(QString)这是什么用法?QString不是个类嘛,不是应该QString一个对象然后传进去么,还是说connect的函数就是要这格式?

② 看了下SIGNAL和SLOT的定义 #define SIGNAL(arg) #arg 这里是把(getText(QString))这整个转换成了字符串???


最近也是重新开始学起了C++,可能有些语法问题比较基础,望海涵


最佳答案

查看完整内容

1、getText(QString)这里是定义的信号,括号里边QString是这个信号发送的时候传递的参数类型,例如“emit getText(“发送信号”)”这句执行,那么相应的槽函数接收到的参数就是“发送信号”这个字符串; 2、SIGNAL和SLOT这两个宏定义是为了在宏定义的参数前边加上前缀字符串,“#”符号作用是字符串拼接,最终作用就是为了区分信号和槽。 ...
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2019-10-10 21:33:27 显示全部楼层
1、getText(QString)这里是定义的信号,括号里边QString是这个信号发送的时候传递的参数类型,例如“emit getText(“发送信号”)”这句执行,那么相应的槽函数接收到的参数就是“发送信号”这个字符串;
2、SIGNAL和SLOT这两个宏定义是为了在宏定义的参数前边加上前缀字符串,“#”符号作用是字符串拼接,最终作用就是为了区分信号和槽。
回复

使用道具 举报

累计签到:94 天
连续签到:1 天
2019-10-11 10:27:25 显示全部楼层
QString在这里是getText的参数类型,不是类,像int用法那样理解都ok。
我觉得初学者没必要研究得那么细,知道connect用法,会用就行了,用多了就自行看得懂了。
connect(信号发送者,SIGNAL(“发送者发出的信号”),this,SLOT(“槽函数”));简单的格式就是这样,只需把括号里中文内容变成自己的就行了。
你书中getText(QString)和setText(QString)就相当于发送者发出的信号函数和槽函数。槽函数就写自己要做的事。connect原函数的SIGNAL()和SLOT()参数都是函数。
//举个例子:你在UI界面放了一个pushButton,在.h文件私有函数另起一行写  
public slots:
    void On_Clicked(bool);    //这个是槽函数
//右击这句槽函数,在第7项Refactor选第3项在xxx.cpp添加定义,然后就在这个函数里写你想要实现的功能。比如让按钮背景变成蓝色 添加下面一句话
  ui->pushButton->setStyleSheet("background-color:blue");
//下面connect要在.cpp全局位置写。
connect(ui->pushButton,SIGNAL(clicked(bool),this,SLOT(On_Clicked(bool)));  //发出动作的对象是按钮,发送的信号是点击(这个点击信号是qt自带的),接收范围是当前类,执行的动作是槽函数里的
这样执行就实现了点击按钮,按钮背景颜色改变的功能。不理解再私信我吧
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2019-10-11 14:15:57 显示全部楼层
今天偶然间F1了一下connect函数,发现里面有这么一句话
Note that the signal and slots parameters must not contain any variable names, only the type
所以 getText(QString) 这是规定了的格式用法
关于问题②,可能就是转换成字符串变成char *型?暂时也不深究了,先记住这用法。
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2019-10-14 12:02:02 显示全部楼层
Chaaaange 发表于 2019-10-11 14:15
今天偶然间F1了一下connect函数,发现里面有这么一句话
Note that the signal and slots parameters must n ...

原来《Qt Creator快速入门》在后面对connect函数进行了解释 P135
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了