在Qt中,基本上任何东西都可以用作信号的插槽(只要签名兼容),那么为什么我要将成员函数声明为插槽呢?将成员函数声明为插槽真的只是从C++11之前的时代遗留下来的吗?
虽然这已经成为一种罕见的情况,但仍然有一些用途可以将方法声明为槽,如果您想在连接(即基于字符串的连接)中使用SIGNAL()
/SLOT()
宏。例如:
QLineEdit
和QTextEdit
;它们没有相互继承,但都有一个textChanged
信号,您可以创建一个窗口,在其中动态添加前者或后者的实例。.qml
文件中的文本。基于字符串的连接的缺点(或我猜函数对象连接的优点)在同一页中列出。
将某些东西标记为插槽,基本上只是旧版Qt和C++11之前的遗留问题。