• 2389阅读
  • 6回复

[提问]求助! 关于<Qt Creator 快速入门> 第二版 第317页的问题 [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2018-08-01

  原书第317页是一个用QMediaPlayer的类做一个简单的音乐播放器
但是为什么Qt 5在QMediaPlayer的error信号传递参数时需要这样写?



Qt 5 的信号和槽传递参数需要强制转换么? 当然我知道Lambda表达式也可以
为什么以前的Qt 4用SIGNAL和SLOT两个宏就可以了
Qt 5 的信号和槽传递参数有好看的写法么?
离线ustone

只看该作者 1楼 发表于: 2018-08-01
Qt Creator快速入门_第三版__霍亚飞编著.pdf
附录B2 新的信号槽语法
有讲。
离线dbzhang800

只看该作者 2楼 发表于: 2018-08-01
如果你用的5.7或之后版本,可以 qOverload

如果你深入用过Qt4,会知道SIGNAL和SLOT这两个宏有很多坑

只看该作者 3楼 发表于: 2018-08-02
回 ustone 的帖子
ustone:Qt Creator快速入门_第三版__霍亚飞编著.pdf
附录B2 新的信号槽语法
有讲。 (2018-08-01 19:07) 

我知道后面有讲到,但是这样的强转让人不舒服,况且我也看不懂这样的强转。转换后的返回值是什么?求解释。
离线dbzhang800

只看该作者 4楼 发表于: 2018-08-02
回 cute知道分子 的帖子
cute知道分子:我知道后面有讲到,但是这样的强转让人不舒服,况且我也看不懂这样的强转。转换后的返回值是什么?求解释。 (2018-08-02 16:26) 

信号函数存在重载,导致这个强转是让人不太舒服。但是static_cast和函数指针这种看不懂的话,是需要补补C++的课的

不过,老式的这两个宏,你觉得好理解么

# define SLOT(a)     "1"#a
# define SIGNAL(a)   "2"#a
离线ustone

只看该作者 5楼 发表于: 2018-08-02
static_cast尖括号里头是类的成员函数指针类型,这个函数是有参数的,它还有一个无参数的重载函数,&QMediaPlayer::error不明确是哪个重载函数(有参或无参),只能强转一下。改成传统的SIGNAL、SLOT写法也可以。

只看该作者 6楼 发表于: 2018-08-02
回 dbzhang800 的帖子
dbzhang800:信号函数存在重载,导致这个强转是让人不太舒服。但是static_cast和函数指针这种看不懂的话,是需要补补C++的课的
不过,老式的这两个宏,你觉得好理解么
....... (2018-08-02 18:45) 

谢谢版主,难道Qt 5 就没有好看又优雅的信号和槽连接方式么?(新语法也行)
快速回复
限100 字节
 
上一个 下一个