×
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.
110 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×