[Kde-devel-es] usar iconos de kde y métodos de un widget

Alejandro Exojo suy at kurly.org
Fri Dec 10 09:24:37 CET 2004


El Viernes, 10 de Diciembre de 2004 03:02, Guillem Barba escribió:
> 1- Cómo puedo hacer que mi programa (hecho con Qt3, es una QApplication)
> use los iconos del KDE (que según el tema que estés usando variarán)? Me
> refiero a los iconos de las barras de herramientas (el botón de copiar, de
> salir...) Para hacer esto tiene que ser una KApplication? se puede hacer de
> alguna forma que sea:

Para hacer eso, se usan las bibliiotecas de KDE, así que sólo se me ocurre 
como hacer si enlazas y dependes de kdelibs. Eso significaría que habrías de 
migrar a KApplication.

Si quieres que siga las convenciones de KDE, habrás de portar mucho código.

>  Si existe icono "del sistema"
>   usa este
>  sino
>   usa el predeterminado de la aplicación (el que haga yo)
>  es para así, siempre que se pueda, mantener la línea de mi programa con el
> resto del entorno.

Según lo que yo conozco hasta ahora (igual hay otra forma, no lo sé), eso no 
funciona así. Si usas una acción estándar (KStdAction), se usará un icono 
estándar de los que ya provee KDE, y si usas una acción propia (KAction), 
debes proporcionarle a ese objeto una forma de que encuentre el icono.

>  Bueno, pues dicho esto, mi problema es que la clase QTabWidget tiene la el
> método "QWidget *currentTab()", y mi idea para reducir código (y hacerlo
> más eficiente y bonito) es usar este puntero ha la "tabla" para lanzar
> métodos públicos de la clase en cuestión (métodos que todos los módulos
> tienen, por ejemplo "update"), pero esto NO me lanza el método que yo he
> implementado en la clase en cuestión (en el caso de "update" que existe en
> la clase QWidget) o me lanza un ERROR en la compilación cuando quiero
> lanzar un método "inventado por mi" del módulo.

Yo tuve problemas con lo mismo. Esas clases retornan un puntero a QWidget, 
pero lo normal es que tu uses una clase que derive de ella.

Recuerda que para ejecutar un método de la clase derivada, que estaba ya 
definido en la clase base, ese método debe ser virtual en ambas clases, y en 
QWidget no lo es, es un SLOT.

> Como puedo hacer para que el método "currentTab()" de QTabWidget me retorne
> un objeto del tipo del módulo que toque? He probado (por probar, no como
> algo definitivo) poniendo
> (NombreDelMódulo)*tab = currentTab()
> (protejido con "if's" para asegurar que el NombreDelMódulo es el que
> tocaba) pero da error.

Los castings "estilo C" creo que es mejor evitarlos. Deberías usar los que 
tiene C++ (reinterpret_cast, static_cast, const_cast, etc.).

-- 
Alex (a.k.a. suy) - GPG ID 0x0B8B0BC2
http://darkshines.net/ - Jabber ID: suy at bulmalug.net


More information about the Kde-devel-es mailing list