×
Namespaces

Variants
Actions

Функция приведения типов в QObject

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Совместимость
Платформа(ы):
Symbian

Статья
Автор: Den123 (13 Jan 2009)
Последнее редактирование: hamishwillee (08 May 2013)
QObject содержит шаблонную функцию T qobject_cast<T>( QObject* object ), которую можно использовать для проверки и приведения типов. В результате выполнения возвращается указатель на объект класса T, если object является объектом класса T или его потомков. Иначе возвращается 0.

Важное ограничение - класс T должен быть потомком QObject, при определении класса T должен использоваться макрос Q_OBJECT (использование данного макроса указывает на то, что перед компиляцией класс будет обработан метаобъектным компилятором (moc) ).

Данная функция ведет себя аналогично стандартной функции C++ dynamic_cast(), однако для выполнения qobject_cast() не требуется использовать RTTI ( Run Time Type Information - информация о типах в процессе исполнения ), все необходимое содержится в метаинформации объекта (метаинформация автоматически добавляется в класс метаобъектным компилятором в процессе сборки).

Пример использования:

if(  qobject_cast<QPushButton*>(obj) )  
{
...
}
QPushButton* pushButton = qobject_cast<QPushButton*>(obj);
if( pushButton )
{
...
}
 
QToolButton* toolButton = qobject_cast<QToolButton*>(obj);
if( toolButton )
{
...
}
This page was last modified on 8 May 2013, at 03:00.
119 page views in the last 30 days.
×