目录
1.打印输出
1.1.cout输出
#include<iostream>
std::cout<< A<< B <<std::endl;
1.2.qDebug输出
#include<QDebug>
QString s = "yaya";
qDebug() << "My name is " << s << ", nice to meet you!" << endl; //方式1
qDebug("My name is " + s.toLatin1() + ", nice to meet you!\n"); //方式2
2.信号与槽
Qt采用信号和槽实现对象部件之间的通信。
2.1.信号
当信号被发射时,Qt将回调与其相连接的槽函数,信号将有元对象处理moc自动翻译成C++代码。信号的声明不在cpp文件中,而是在头文件中。
Q_OBJECT
......
signals:
void mySignal();
void mySignal (int x);
void mySignalParam(int x, int y);
2.2.槽函数
- 槽函数是普通的C++成员函数,可以被正常调用
- 槽函数可以有返回值,也可以没有
- 槽函数的访问权限三种:public slots、priate slots和protected slots
- 槽函数的存取权限决定了谁能够与其相关联
Q_OBJECT
......
public slots:
void mySlot();
void mySlot(int x);
void mySignalParam (int x, int y);
2.3.连接
QMetaObject::Connection QObject::connect(
const QObject *sender, PointerToMemberFunction signal,
const QObject *receiver, PointerToMemberFunction method,
Qt::ConnectionType type = Qt::AutoConnection);
参数:
- sender: 发出信号的对象
- signal: 属于sender对象, 信号是一个函数, 这个参数的类型是函数
指针, 信号函数地址
- receiver: 信号接收者
- method: 属于receiver对象, 当检测到sender发出了signal信号,
receiver对象调用method方法,信号发出之后的处理动作
// 参数 signal 和 method 都是函数地址, 因此简化之后的 connect() 如下:
connect(const QObject *sender, &QObject::signal,
const QObject *receiver, &QObject::method);
2.4.发送信号
signal一般是在事件处理时Qt自己发出的,如果需要程序自己触发信号,则使用emit
2.5.取消连接
取消连接不常用,Qt会在一个对象被删除后自动取消这个对象所包含的所有连接。
bool QObject: disconnect(const QObject *k sender, const char *k signal, const QObject receiver, const char method);