🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: chile.comp.programacion
Article #1792

Problemas con KDevelop

#1792
From: Victor Alejandro Ramiro Cid
Date: Wed, 17 May 2006 17:53
67 lines
3258 bytes
Hola,

Ojala Alguien pueda ayudarme con esto....

Estoy trabajando en una app que ocupa las librerias QT
Me puse a trabajar con KDevelop y QTDesigner, todo bien hasta que
encontre el siquiente problema:

Tengo una Interfaz FormGUI.ui que genera los archivos formgui.h y
formgui.cpp. Los eventos de la interfaz se
implementan en FormGUICode.cpp. Cuando hago ese link, kdevelop agregar
un archivo FormGUI.moc (un metaobjeto).

Bueno...hasta ahi todo ok. El punto es que necesito heredar de una clase
FormAbstract (definida en FormAbstract.h) para definir un protocolo entre las
clases derivadas. Asi el cuento queda:


QObject <- QWidget <- FormGUI <- FormGUICode
                                    /
		     FormAbstract<-/

Bueno, todo funciona ok hasta aca...

En una parte del codigo tengo:

QWidget * form = getFormDesdeUnStackDeWidgets();
// aca necesito ocupar el protocolo, por lo que hago un cast
FormAbstract * aform = (FormAbstract *) form;

Object* result = aform->metodoDelProtocolo();  // aca deberia funcar el enlace dinamico...

Bueno, hasta aca, todo ok. El punto es que no se hace el enlace dinamico
como yo espero, mas bien se llama a un metodo qt_cast del metaobjeto
(sepa molla por que...)

void* QTGUI::FormGUICode::qt_cast( const char* clname )
{
    if ( !qstrcmp( clname, "QTGUI::FormGUICode" ) )
        return this;
    if ( !qstrcmp( clname, "FormAbstract" ) )
        return (FormAbstract*)this;
    return FormPRespuesta::qt_cast( clname );
}

Como ven, el punto aca es que no logra resolver el cast dinamico.
No se bien como funciona KDeveloper, pero inspeccionando el codigo veo que
hay un error cuando genero el MOC, ya que FormAbstract tambien esta en el namespace QTGUI
por lo que creo que el metodo deberia ser:


void* QTGUI::FormGUICode::qt_cast( const char* clname )
{
    if ( !qstrcmp( clname, "QTGUI::FormGUICode" ) )
        return this;
    if ( !qstrcmp( clname, "QTGUI::FormAbstract" ) )  // <----- Aca cambia!!!
        return (FormAbstract*)this;
    return FormPRespuesta::qt_cast( clname );
}

Pero, como el moc se autogenera cada vez que compilo, no puedo cambiarlo.
Alguna idea de como solucionar esto....o algun error que estoy cometiendo?
(o alguna lista de QT, KDE donde einscribirse ;) )

Saludos,
Victor Ramiro Cid - LU #171397 
mailto:<vramiro@SIN_ESTOdcc.uchile.cl>  
Technical Details
Message-ID: <e4fnuq$cvt$1@helcaraxe.dcc.uchile.cl>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news.glorb.com!news.kjsl.com!news.nivel5.cl!news.cec.uchile.cl!helcaraxe.dcc.uchile.cl!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,661033d99a2352c9,start
X-Google-Attributes: gid1593cb,public
X-Google-Language: SPANISH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news.glorb.com!news.kjsl.com!news.nivel5.cl!news.cec.uchile.cl!helcaraxe.dcc.uchile.cl!not-for-mail
From: Victor Alejandro Ramiro Cid <vramiro@dcc.uchile.cl>
Newsgroups: chile.comp.programacion
Subject: Problemas con KDevelop
Date: Wed, 17 May 2006 17:53:30 +0000 (UTC)
Organization: DCC - Universidad de Chile
Lines: 68
Message-ID: <e4fnuq$cvt$1@helcaraxe.dcc.uchile.cl>
NNTP-Posting-Host: anakena.dcc.uchile.cl
X-Trace: helcaraxe.dcc.uchile.cl 1147888410 13309 192.80.24.6 (17 May 2006 17:53:30 GMT)
X-Complaints-To: newsmaster@dcc.uchile.cl
NNTP-Posting-Date: Wed, 17 May 2006 17:53:30 +0000 (UTC)
User-Agent: tin/1.6.2-20030910 ("Pabbay") (UNIX) (Linux/2.6.14-gentoo-r5 (i686))