Kdevelop+QTDesigner problem

Andreas Pakulat apaku at gmx.de
Wed May 17 20:21:23 BST 2006

On 17.05.06 14:44:11, Victor Ramiro wrote:
> First of all, sorry for my poor english

I'v seen worse ;-)

> QWidget * form = getFormFromStackWidgets();  // supouse that form is a Form1
> object
> AbstractFormClass * aform = (AbstractFormClass *) form;

Uh, Oh, that really hurts my eyes. For QObject-derived classes you can
use qt_cast<>() for anything else you should use dynamic_cast<>() or
static_cast<>() (depending on the situation). Note that the last 2 need
RTTI support from your compiler, which should be available in any decent
one. qt_cast works always.

Using qt_cast and dynamic_cast also enable you to check wether the cast
really succeeded, if it doesn't aform is 0.

> Object* result = aform->method();   // dynamic binding to Form1::method
> well, debugging i found that result is always NULL.
> Why?, method is never called. Instead, i entered to qt_cast from
> Form1.moc(why??, someone explain this to me...)
> Well, i think the problem is in qt_cast code:
> void* QTGUI::FormGUICode::qt_cast( const char* clname )
> {
>    if ( !qstrcmp( clname, "GUI::Form1Code" ) )
>        return this;
>    if ( !qstrcmp( clname, "AbstractFormClass" ) )  // <-- here is wrong??
>        return (AbstractFormClass*)this;
>    return FormPRespuesta::qt_cast( clname );
> }

I'm not sure how good Qt3's support for namespaces is. Also I think
there might be something wrong with your declarations. Can you show us
the class declaration of your Form1Code and the top of your .ui file?


Your best consolation is the hope that the things you failed to get weren't
really worth having.

More information about the KDevelop mailing list