信号与槽
信号与槽是元对象系统支持的,对象间通信所采用的机制。
connect函数使用:
connect(发送者,信号,接受者,实现);
connect(const QObject *sender,const char * signal, const QObject *receive, const char *member,Qt::ConnectionType = Qt::AutoConnection) ;
如果信号和槽函数都存在重载的情况,则需要使用qOverload<参数类型>进行指定; 例:
void temp(bool checked);
void temp();
connect(ui->checkBox,&QCheckBox::clicked,this,qOverload
connect(ui->checkBox,&QCheckBox::clicked,this,qOverload<>(&Widget::temp);)
最后一个参数:Qt::ConnectionType表示了信号和槽的关联方式 Qt::AutoConnection(缺省值):自动确认关联方式;(如果第五个值不填的话,默认是这个) Qt::DirectConnection :信号被发射时,槽立即执行,槽函数与信号在同一线程。 Qt::QueuedConnection :事件循环回到接收者线程后执行槽,槽与信号在不同线程。 Qt::BlockingQueueConnection :与Qt::QueuedConnection相似,信号线程会被阻塞直到槽函数执行完毕。当槽函数与信号在同一线程,会造成死锁。
disconnect() 函数的使用
1,解除一个 sender所有signal的连接
disconnect(myObject,nullptr,nullptr,nullptr);//静态函数
myObject->disconnect(); //成员函数
2,解除一个与特定信号的所有连接
disconnect(myObject,SIGNAL(mySignal()),nullptr,nullptr);
myObject->disconnect(SIGNAL(mySignal()));
3,解除一个特定的receive的所有连接
disconnect(myObject,nullptr,myReceive,nullptr);
myObject->disconnect(myReceive);
4,解除一对特定的信号和槽的连接
disconnect(lineEdit,&QLineEdit::textChanged,label,&QLabel::setText);
sender()函数
在槽函数里,使用QObject::sender()可以获取信号发送者的指针
QSpinBox *spinbox = qobject_cast
数据类型
Qt的数据类型,确保在每个平台上各数据类型都有统一长度 qreal缺省是8各字节double类型浮点数,如果Qt使用-qreal float 选项进行配置,就是4字节float类型浮点数。
qfloat16是Qt5.9.0中新增的一个类,用于表示16位浮点数,使用它需要包含头文件
qsizetype是Qt5.10中增加的一种类型,等效于POSIX标准中的ssize_t,表示有符号整数。
Qt数据类型等效定义字节数qint8signed char1qint16signed short2qint32signed int4qint64long long int8qlonglonglong long int8quint8unsigned char1quint16unsigned short2quint32unsigned int4quint64unsigned long long int8qulonglongunsigned long long int8ucharunsigned char1ushortunsigned short2uintunsigned int4ulongunsigned long8qrealdouble8qsizetypessize_t8qfloat162
Q_UNSUED(name):这个宏用于在函数中定义不在函数体里使用的参数
Qt的元对象系统(Qt的核心部分)
Q_Objedct类是所有使用元对象系统的类的基类; 必须在一个类的的开头部分插入宏Q_OBJECT,才可以使用元对象系统的特性;
对象树:表示对象间从属关系的树状结构;QObject提供了parent()、children()、findChildren();对象树中的某个对象被删除时,它的子对象也将被删除。
属性系统:可以使用宏Q_PROPERTY定义属性,QObject的setProperty()会设置属性值或者定义动态属性;property函数会返回属性值
相关阅读
发表评论