![]() |
http://www.sim.no http://www.coin3d.org |
#include <Inventor/Qt/SoQtObject.h>
Inheritance diagram for SoQtObject:
The purpose of making this class the superclass of all SoQt device, component and viewer classes is to be able to do run-time type checking of the SoQt objects.
You can place the macro SOQT_OBJECT_HEADER(classname,parentname) within a class definition header for SoQt extension components to automatically make the necessary definitions for setting up a run-time type system for your extension classes:
#ifndef MYSPECIALVIEWER_H #define MYSPECIALVIEWER_H class MySpecialViewer : public SoQtExaminerViewer { SOQT_OBJECT_HEADER(MySpecialViewer, SoQtExaminerViewer); // [rest of class definition follows] }; #endif // !MYSPECIALVIEWER_H
Then put the SOQT_OBJECT_SOURCE(classname) macro within the actual implementation sourcecode file to include the necessary code for the run-time type system:
#include <MySpecialViewer.h> SOQT_OBJECT_SOURCE(MySpecialViewer); // [rest of class implementation]
See also the documentation of the SoType class in Coin or Inventor.
Public Member Functions | |
virtual SoType | getTypeId (void) const=0 |
SbBool | isOfType (SoType type) const |
Static Public Member Functions | |
static void | initClass (void) |
static SoType | getClassTypeId (void) |
static void | init (void) |
void SoQtObject::initClass | ( | void | ) | [static] |
Sets up initialization for data common to all instances of this class, submitting necessary information to the internal SoQt type system.
SoType SoQtObject::getClassTypeId | ( | void | ) | [static] |
This static method returns the SoType object associated with objects of this class.
SoType SoQtObject::getTypeId | ( | void | ) | const [pure virtual] |
Returns the type identification of an object derived from a class inheriting SoQtObject. This is used for run-time type checking and "downward" casting.
Usage example:
void foo(SoQtViewer * comp) { if (comp->getTypeId() == SoQtExaminerViewer::getClassTypeId()) { // safe downward cast, knows the type SoQtExaminerViewer * exviewer = (SoQtExaminerViewer *)comp; } else if (comp->getTypeId().isOfType(SoQtFlyViewer::getClassTypeId())) { // safe downward cast, knows the type SoQtFlyViewer * flyviewer = (SoQtFlyViewer *)comp; // then something else } }
SbBool SoQtObject::isOfType | ( | SoType | type | ) | const |
Returns TRUE
if the type of this object is either of the same type or inherited from type.
void SoQtObject::init | ( | void | ) | [static] |
Initialize the type system of SoQtObject, all SoQt device classes and all SoQt components (including viewers).
Copyright © 1998-2005 by Systems in Motion AS. All rights reserved.
Generated on Wed May 9 11:46:57 2007 for SoQt by Doxygen. 1.5.1