Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

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

From 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 00:00.
113 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.

×