QT基础:06---元对象系统(QObject、Q_OBJECT、MOC)、sender()函数

一、元对象系统的组成

什么是Qt元对象系统

QT基础:06---元对象系统(QObject、Q_OBJECT、MOC)、sender()函数_第1张图片

元对象由以下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

QT基础:06---元对象系统(QObject、Q_OBJECT、MOC)、sender()函数_第2张图片

三、sender()函数

  •  QObject的sender()函数可以在槽函数中用来获取发射信号的对象,但是需要强制类型转换

演示案例:

  • 设置一个“选择文件”按钮的toolTip

QT基础:06---元对象系统(QObject、Q_OBJECT、MOC)、sender()函数_第3张图片

  • 定义按钮的clicked槽函数,在槽函数内得到发射此信号的对象,并且打印该对象的toolTip
void Widget::on_btn_selectFile_clicked()
{
    QPushButton *btn=static_cast(sender());

    ui->plainTextEdit->appendPlainText(btn->toolTip());
}

QT基础:06---元对象系统(QObject、Q_OBJECT、MOC)、sender()函数_第4张图片

你可能感兴趣的:(QT基础)