Метаобъектная информация — класс QMetaObject

   
На этом шаге рассмотрим класс QMetaObject.

   
Каждый объект, созданный от класса QObject или от унаследованного от него класса, располагает структурой данных, называемой метаобъектной информацией (класс QMetaObject). В ней хранится информация о сигналах, слотах (включая указатели на них), о самом классе и о наследовании.

   
Получить доступ к этой информации можно посредством метода QObject::metaObject(). Таким образом, для того чтобы узнать, например, имя класса объекта, от которого он был создан, можно поступить следующим образом:

qDebug() << pobj1->metaObject()->className();

   
Для того чтобы сравнить имя класса с известным, можно поступить так:

if (pobj1->metaObject()->className() == "MyClass")
{
   // Выполнить какие-либо действия
}

   
Для получения информации о наследовании классов существует метод inherits(const char*), который определен непосредственно в классе QObject и возвращает значение true, если класс объекта унаследован от указанного в этом методе класса либо создан от данного класса, иначе метод возвращает значение false. Например:

if(pobj->inherits("QWidget"))
{
   QWidget* pwgt = static_cast<QWidget*>(pobj);
   // Выполнить какие-либо действия с pwgt
}

   
Метаобъектную информацию использует и операция приведения типов qobject_cast<T>. Таким образом, при помощи метода inherits() пример можно изменить:

QWidget* pwgt = qobject_cast<QWidget*>(pobj);
if(pwgt)
{
        // Выполнить какие-либо действия с pwgt
}

   
На следующих шагах будем рассматривать элементы управления, и начнем с класса QWidget.

Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий