Qt:06---元对象系统(QObject、Q_OBJECT、MOC)、sender()函数
原创
©著作权归作者所有:来自51CTO博客作者董哥的黑板报的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、元对象系统的组成
什么是Qt元对象系统
元对象由以下3个基础组成:
-
QObject基类:任何需要使用元对象系统功能的类必须继承自QObject
-
Q_OBJECT宏:此宏必须出现在类的私有声明区,用于启动元对象的特性(如动态属性、信号与槽等)
-
MOC(元对象编辑器):为QObject子类实现元对象特性提供必要的代码实现
二、QObject的其他功能
QObject *obj=new QPushButton;
QString str=obj->metaObject()->className();
//str等于QPushButton
QTimer* ti=new QTimer;
bool val1=ti->inherits("QTimer"); //true
bool val2=ti->inherits("QObject"); //true
bool val3=ti->inherits("QAbstractButton");//false
三、sender()函数
- QObject的sender()函数可以在槽函数中用来获取发射信号的对象,但是需要强制类型转换
演示案例:
- 定义按钮的clicked槽函数,在槽函数内得到发射此信号的对象,并且打印该对象的toolTip
void Widget::on_btn_selectFile_clicked()
{
QPushButton *btn=static_cast<QPushButton*>(sender());
ui->plainTextEdit->appendPlainText(btn->toolTip());
}