QT中的对象树
一定程度上简化了内存回收机制:当创建的对象 指定的父亲是由QObject或者Object派生的类时候,这个对象被加载到对象树上,当窗口关闭掉时候,树上的对象也都会被释放掉
信号和槽
通过使用connect()方法,将信号与槽函数绑定。
connect()方法参数说明:
connect(信号发送方,发送的信号,信号接收方,处理的槽函数)
自定义信号和槽函数
自定义信号写在 signals 下
返回值是void
只需要声明,不需要实现
可以有参数,可以发生重载
自定义槽函数,写在public下 或者是全局函数 或者 写在public slot 下或者 lambda表达式
返回值是void
需要声明,也需要实现
可以有参数,可以发生重载
当信号和槽发生重载后,再使用时要使用函数指针明确指出函数地址
拓展
- 信号可以连接信号
- 可以使用disconnect()断开信号和槽
- 多个信号可以连接到同一个槽函数
- 信号和槽函数的参数类型必须一一对应,信号的参数个数可以多余槽函数的参数个数,反之不行。
QString转为char*
首先调用Qstring字符串的toUtf8()方法转为QByteArray数据类型,再调用data()方法转为char*类型。
例:
QString str = "this is a Qstring!";
char * pstr = str.toUtf8().data();