Development/Tutorials/KDE4 Porting Guide (es): Difference between revisions
No edit summary |
No edit summary |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
==Introducción== | |||
== Introducción == | |||
Este es un tutorial con la intención de ayudar a los desarrolladores a migrar sus aplicaciones basadas en Qt3/KDE3 a Qt4/KDE4. Migrar una aplicación basada en KDE3 no tiene por qué ser un proceso complicado. Actualmente, hay muchos scripts y fuentes de documentación que pueden ayudar. | Este es un tutorial con la intención de ayudar a los desarrolladores a migrar sus aplicaciones basadas en Qt3/KDE3 a Qt4/KDE4. Migrar una aplicación basada en KDE3 no tiene por qué ser un proceso complicado. Actualmente, hay muchos scripts y fuentes de documentación que pueden ayudar. | ||
Line 7: | Line 7: | ||
Para las instrucciones en este tutorial se van a usar las siguientes convenciones: | Para las instrucciones en este tutorial se van a usar las siguientes convenciones: | ||
* programa se refiere a un programa ejecutable. | * programa se refiere a un programa ejecutable. | ||
Line 14: | Line 13: | ||
* $SVN se refiere a la ruta completa donde está localizada su versión de KDE subversion. | * $SVN se refiere a la ruta completa donde está localizada su versión de KDE subversion. | ||
==CMake== | == CMake == | ||
A diferencia de KDE3, las aplicaciones de KDE4 serán construidas con la ayuda de CMake. La forma más fácil de migrar el sistema de autotools a CMake es con la ayuda del script am2cmake que puede ser encontrado en el directorio cmake/scripts de el módulo kdesdk. Este creará una serie de ficheros CMakeLists.txt al lado de sus archivos buildsystem anteriores. | A diferencia de KDE3, las aplicaciones de KDE4 serán construidas con la ayuda de CMake. La forma más fácil de migrar el sistema de autotools a CMake es con la ayuda del script am2cmake que puede ser encontrado en el directorio cmake/scripts de el módulo kdesdk. Este creará una serie de ficheros CMakeLists.txt al lado de sus archivos buildsystem anteriores. | ||
Line 21: | Line 20: | ||
Por ejemplo, si su código fuente está ubicado en /path/to/srv entonces: | Por ejemplo, si su código fuente está ubicado en /path/to/srv entonces: | ||
< | <syntaxhighlight lang="bash"> | ||
% cd /path/to/src | % cd /path/to/src | ||
% $SVN/trunk/KDE/kdesdk/cmake/scripts/am2cmake --kde4 | % $SVN/trunk/KDE/kdesdk/cmake/scripts/am2cmake --kde4 | ||
</ | </syntaxhighlight> | ||
Ejecute < | Ejecute <syntaxhighlight lang="text">am2cmake --help</tt> para revisar si necesita la opción <syntaxhighlight lang="text">--kde4</syntaxhighlight>. | ||
También hay una herramienta para mirar por problemas potenciales en sus ficheros {{path|CMakeList.txt}} resultantes. Esta herramienta se llama {{program|cmakelint.pl}}. Y está ubicada en {{path|$SVN/trunk/kde/kdesdk/scripts}}. Se usa así: | También hay una herramienta para mirar por problemas potenciales en sus ficheros {{path|CMakeList.txt}} resultantes. Esta herramienta se llama {{program|cmakelint.pl}}. Y está ubicada en {{path|$SVN/trunk/kde/kdesdk/scripts}}. Se usa así: | ||
< | <syntaxhighlight lang="bash"> | ||
% cd /path/to/src | % cd /path/to/src | ||
% $SVN/trunk/KDE/kdesdk/scripts/cmakelint.pl CMakeLists.txt | % $SVN/trunk/KDE/kdesdk/scripts/cmakelint.pl CMakeLists.txt | ||
</ | </syntaxhighlight> | ||
O para ejecutarla por todo el directorio de las fuentes, se hace: | O para ejecutarla por todo el directorio de las fuentes, se hace: | ||
< | <syntaxhighlight lang="bash"> | ||
% cd /path/to/src | % cd /path/to/src | ||
% find . -name CMakeLists.txt | \ | % find . -name CMakeLists.txt | \ | ||
xargs $SVN/trunk/KDE/kdesdk/scripts/cmakelint.pl | xargs $SVN/trunk/KDE/kdesdk/scripts/cmakelint.pl | ||
</ | </syntaxhighlight> | ||
==API de Qt4== | == API de Qt4 == | ||
Una descripción general de la transición de Qt3 a Qt4 puede ser encontrada en el documento [http://doc.trolltech.com/4.4/porting4-overview.html "Moving from Qt 3 to Qt 4"] de Trolltech. Este documento provee una excelente descripción de los mayores cambios en las funcionalidades en Qt4, es altamente recomendada su lectura. | Una descripción general de la transición de Qt3 a Qt4 puede ser encontrada en el documento [http://doc.trolltech.com/4.4/porting4-overview.html "Moving from Qt 3 to Qt 4"] de Trolltech. Este documento provee una excelente descripción de los mayores cambios en las funcionalidades en Qt4, es altamente recomendada su lectura. | ||
Line 54: | Line 53: | ||
Estos documentos describen una herramienta proveída por Trolltech llamada {{program|qt3to4}} que nos puede ayudar en el proceso de migrar las partes Qt de nuestro código de Qt3 a Qt4, usando funciones de compatibilidad. Ejecute qt3to4 así: | Estos documentos describen una herramienta proveída por Trolltech llamada {{program|qt3to4}} que nos puede ayudar en el proceso de migrar las partes Qt de nuestro código de Qt3 a Qt4, usando funciones de compatibilidad. Ejecute qt3to4 así: | ||
< | <syntaxhighlight lang="bash"> | ||
% $SVN/trunk/qt-copy/bin/qt3to4 [options] <Infile>, [Infile], ... | % $SVN/trunk/qt-copy/bin/qt3to4 [options] <Infile>, [Infile], ... | ||
</ | </syntaxhighlight> | ||
Infile puede ser tanto un fichero fuente como un fichero de proyecto. Si se especifica un fichero de proyecto, terminado en '.pro' o '.pri', {{program|qt3to4}} portará todos los ficheros especificados en ese proyecto. | Infile puede ser tanto un fichero fuente como un fichero de proyecto. Si se especifica un fichero de proyecto, terminado en '.pro' o '.pri', {{program|qt3to4}} portará todos los ficheros especificados en ese proyecto. | ||
Line 67: | Line 66: | ||
Simplemente ejecute este programa sin ninguna opción adicional en el directorio de fuentes así: | Simplemente ejecute este programa sin ninguna opción adicional en el directorio de fuentes así: | ||
< | <syntaxhighlight lang="bash"> | ||
% $SVN/trunk/KDE/kdesdk/scripts/qt4/remove-qt3-support.pl | % $SVN/trunk/KDE/kdesdk/scripts/qt4/remove-qt3-support.pl | ||
</ | </syntaxhighlight> | ||
Probablemente quedarán aún algunas clases Qt3 en el código, así que asegúrese de que en su fichero CMakeLists.txt del nivel superior estén definidas las macros para las cabeceras Qt QT3_SUPPORT y QT3_SUPPORT_WARNINGS de esta forma: | |||
< | <syntaxhighlight lang="text"> | ||
add_definitions (-DQT3_SUPPORT -DQT3_SUPPORT_WARNINGS) | add_definitions (-DQT3_SUPPORT -DQT3_SUPPORT_WARNINGS) | ||
</ | </syntaxhighlight> | ||
==API de KDE4== | == API de KDE4 == | ||
Mucho del esfuerzo al portar las aplicaciones consiste en simplemente renombrar ficheros de clases y cabeceras. Como puede ser muy tedioso cambiar todo esto a mano, existe un script en el directorio {{path|scripts/qt4}} de {{module|kdesdk}} llamado {{program|adapt-to-kde4-api.pl}}. Este actualizará todos sus ficheros y creará un {{program|diff}} para que así pueda ver qué cambios se realizaron. | Mucho del esfuerzo al portar las aplicaciones consiste en simplemente renombrar ficheros de clases y cabeceras. Como puede ser muy tedioso cambiar todo esto a mano, existe un script en el directorio {{path|scripts/qt4}} de {{module|kdesdk}} llamado {{program|adapt-to-kde4-api.pl}}. Este actualizará todos sus ficheros y creará un {{program|diff}} para que así pueda ver qué cambios se realizaron. | ||
Line 85: | Line 84: | ||
==Ficheros UI de Qt Designer== | == Ficheros UI de Qt Designer == | ||
Los ficheros ".ui" de Qt designer creados usando Qt3 deben ser convertidos al nuevo formato de Qt4. Esto se puede hacer usando el programa {{program|uic3}} disponible en su instalación de Qt4. | Los ficheros ".ui" de Qt designer creados usando Qt3 deben ser convertidos al nuevo formato de Qt4. Esto se puede hacer usando el programa {{program|uic3}} disponible en su instalación de Qt4. | ||
< | <syntaxhighlight lang="bash"> | ||
% $SVN/trunk/qt-copy/bin/uic3 -convert file.ui > foo.ui | % $SVN/trunk/qt-copy/bin/uic3 -convert file.ui > foo.ui | ||
% mv foo.ui file.ui | % mv foo.ui file.ui | ||
</ | </syntaxhighlight> | ||
O si prefiere una herramienta gráfica, puede usar el programa Qt4 designer. | O si prefiere una herramienta gráfica, puede usar el programa Qt4 designer. | ||
< | <syntaxhighlight lang="bash"> | ||
% $SVN/trunk/qt-copy/bin/designer file.ui | % $SVN/trunk/qt-copy/bin/designer file.ui | ||
</ | </syntaxhighlight> | ||
(se puede sobreescribir el fichero file.ui, o si se prefiere guardar como uno nuevo) | (se puede sobreescribir el fichero file.ui, o si se prefiere guardar como uno nuevo) | ||
Line 104: | Line 103: | ||
Además debería ejecutar el programa {{program|fixuifiles}} de el módulo {{module|kdesdk}}, este realizará rutinas de limpieza y pruebas de consistencia sobre el código: | Además debería ejecutar el programa {{program|fixuifiles}} de el módulo {{module|kdesdk}}, este realizará rutinas de limpieza y pruebas de consistencia sobre el código: | ||
< | <syntaxhighlight lang="bash"> | ||
% $SVN/trunk/KDE/kdesdk/scripts/fixuifiles | % $SVN/trunk/KDE/kdesdk/scripts/fixuifiles | ||
</ | </syntaxhighlight> | ||
==D-Bus== | == D-Bus == | ||
En lugar de usar DCOP como KDE3, KDE4 ahora usa D-Bus para la comunicación entre sus procesos. La migración de DCOP a DBus es un tema que está ampliamente cubierto en detalle en el tutorial de migración a D-Bus [[Development/Tutorials/Porting_to_D-Bus|tutorial de migración a D-Bus]]. | En lugar de usar DCOP como KDE3, KDE4 ahora usa D-Bus para la comunicación entre sus procesos. La migración de DCOP a DBus es un tema que está ampliamente cubierto en detalle en el tutorial de migración a D-Bus [[Development/Tutorials/Porting_to_D-Bus|tutorial de migración a D-Bus]]. | ||
Line 114: | Line 113: | ||
Para más información, por favor vea nuestros [[Development/Tutorials#D-Bus|tutoriales sobre D-Bus]]. | Para más información, por favor vea nuestros [[Development/Tutorials#D-Bus|tutoriales sobre D-Bus]]. | ||
==Íconos== | == Íconos == | ||
KDE4 usa la [http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html especificación de nombrado de íconos de freedesktop.org] como base para nombrar sus íconos. Esto significa que tanto los íconos incluídos con KDE4 (Oxygen) como los componentes en las kdelibs que usan íconos, usan dicha especificación. | KDE4 usa la [http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html especificación de nombrado de íconos de freedesktop.org] como base para nombrar sus íconos. Esto significa que tanto los íconos incluídos con KDE4 (Oxygen) como los componentes en las kdelibs que usan íconos, usan dicha especificación. | ||
Line 123: | Line 122: | ||
==Internacionalización== | == Internacionalización == | ||
Para crear su fichero ".pot", copie los comandos de la regla 'messages' ubicada en el {{path|Makefile.am}} de su proyecto en un script de línea de comandos que se llame {{path|Messages.sh}}. Puede asumir que las mismas variables aún existen ($PREPARETIPS, $XGETTEXT, $podir, etc.), pero tenga presente las diferencias de sintaxis existentes entre el Makefile y los scripts de línea de comandos. | Para crear su fichero ".pot", copie los comandos de la regla 'messages' ubicada en el {{path|Makefile.am}} de su proyecto en un script de línea de comandos que se llame {{path|Messages.sh}}. Puede asumir que las mismas variables aún existen ($PREPARETIPS, $XGETTEXT, $podir, etc.), pero tenga presente las diferencias de sintaxis existentes entre el Makefile y los scripts de línea de comandos. | ||
También hay que tener cuidado si se usa la opción "-k" con $XGETTEXT, podría tener que listar explícitamente todas las variantes que use. | También hay que tener cuidado si se usa la opción "-k" con $XGETTEXT, podría tener que listar explícitamente todas las variantes que use. | ||
Por ejemplo, la creación de la regla 'messages': | Por ejemplo, la creación de la regla 'messages': | ||
<syntaxhighlight lang="text"> | |||
messages: rc.cpp | |||
rm -f tips.cpp | rm -f tips.cpp | ||
$(PREPARETIPS) > tips.cpp | $(PREPARETIPS) > tips.cpp | ||
$(XGETTEXT) -ktranslate *.cpp *.h -o $(podir)/kmail.pot | $(XGETTEXT) -ktranslate *.cpp *.h -o $(podir)/kmail.pot | ||
rm -f tips.cpp | rm -f tips.cpp | ||
</ | </syntaxhighlight> | ||
Se transforma en el script Messages.sh: | Se transforma en el script Messages.sh: | ||
< | |||
#! /usr/bin/env bash | <syntaxhighlight lang="bash"> | ||
$PREPARETIPS > tips.cpp | #! /usr/bin/env bash | ||
$XGETTEXT -ktranslate:1,1t -ktranslate:1c,2,2t *.cpp *.h -o $podir/kmail.pot | $PREPARETIPS > tips.cpp | ||
rm -f tips.cpp | $XGETTEXT -ktranslate:1,1t -ktranslate:1c,2,2t *.cpp *.h -o $podir/kmail.pot | ||
</ | rm -f tips.cpp | ||
==Qué hacer y qué no hacer== | </syntaxhighlight> | ||
== Qué hacer y qué no hacer == | |||
* NO use las antiguas reglas de las clases de sockets. | * NO use las antiguas reglas de las clases de sockets. | ||
Line 149: | Line 153: | ||
* NO haga código que dibuje en widgets fuera de los eventos de dibujo. | * NO haga código que dibuje en widgets fuera de los eventos de dibujo. | ||
* Intente no usar {{qt3|QHBox}}, {{qt3|QVBox}}, {{qt3|QGrid}}. Es preferible que use Layouts en su lugar. | * Intente no usar {{qt3|QHBox}}, {{qt3|QVBox}}, {{qt3|QGrid}}. Es preferible que use Layouts en su lugar. | ||
* NO use frames de GroupBoxes, Labels o LineEdits para imitar un widget diferente. Use el widget apropiado. p.e., en vez de hacer que un | * NO use frames de GroupBoxes, Labels o LineEdits para imitar un widget diferente. Use el widget apropiado. p.e., en vez de hacer que un Label tenga un sunken lineedit border, ¿por qué no usa un {{class|KLineEdit}} de solo lectura mejor? Y en vez de usar un {{class|KLineEdit}} sin borde para un widget copiable, use {{class|KActiveLabel}}. | ||
* ¡NO use un GroupBox sin borde para agrupar widgets! Use un Layout. | * ¡NO use un GroupBox sin borde para agrupar widgets! Use un Layout. | ||
==Documentación== | == Documentación == | ||
* [http://doc.trolltech.com/4.3 Qt4.3 Reference] | * [http://doc.trolltech.com/4.3 Qt4.3 Reference]. | ||
* [http://developer.kde.org/documentation/library/svn-api.php KDE4 API Reference] | * [http://developer.kde.org/documentation/library/svn-api.php KDE4 API Reference]. | ||
* [http://www.cmake.org/HTML/Documentation.html CMake Cross Platform Make] | * [http://www.cmake.org/HTML/Documentation.html CMake Cross Platform Make]. | ||
* [http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/KDE4PORTING.html KDE4PORTING.html] | * [http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/KDE4PORTING.html KDE4PORTING.html]. | ||
==Otras fuentes de ayuda== | == Otras fuentes de ayuda == | ||
* Canal #kde4-devel en el servidor irc.freenode.net. | * Canal #kde4-devel en el servidor irc.freenode.net. | ||
[[Category:KDE4]] | [[Category:KDE4]] |
Latest revision as of 18:22, 15 July 2012
Introducción
Este es un tutorial con la intención de ayudar a los desarrolladores a migrar sus aplicaciones basadas en Qt3/KDE3 a Qt4/KDE4. Migrar una aplicación basada en KDE3 no tiene por qué ser un proceso complicado. Actualmente, hay muchos scripts y fuentes de documentación que pueden ayudar. Convenciones
Para las instrucciones en este tutorial se van a usar las siguientes convenciones:
- programa se refiere a un programa ejecutable.
- path se refiere a la ruta.
- file se refiere a un fichero.
- $SVN se refiere a la ruta completa donde está localizada su versión de KDE subversion.
CMake
A diferencia de KDE3, las aplicaciones de KDE4 serán construidas con la ayuda de CMake. La forma más fácil de migrar el sistema de autotools a CMake es con la ayuda del script am2cmake que puede ser encontrado en el directorio cmake/scripts de el módulo kdesdk. Este creará una serie de ficheros CMakeLists.txt al lado de sus archivos buildsystem anteriores.
Por ejemplo, si su código fuente está ubicado en /path/to/srv entonces:
% cd /path/to/src
% $SVN/trunk/KDE/kdesdk/cmake/scripts/am2cmake --kde4
Ejecute
am2cmake --help</tt> para revisar si necesita la opción <syntaxhighlight lang="text">--kde4
.
También hay una herramienta para mirar por problemas potenciales en sus ficheros CMakeList.txt resultantes. Esta herramienta se llama cmakelint.pl. Y está ubicada en $SVN/trunk/kde/kdesdk/scripts. Se usa así:
% cd /path/to/src
% $SVN/trunk/KDE/kdesdk/scripts/cmakelint.pl CMakeLists.txt
O para ejecutarla por todo el directorio de las fuentes, se hace:
% cd /path/to/src
% find . -name CMakeLists.txt | \
xargs $SVN/trunk/KDE/kdesdk/scripts/cmakelint.pl
API de Qt4
Una descripción general de la transición de Qt3 a Qt4 puede ser encontrada en el documento "Moving from Qt 3 to Qt 4" de Trolltech. Este documento provee una excelente descripción de los mayores cambios en las funcionalidades en Qt4, es altamente recomendada su lectura.
La continuación, "Porting to Qt 4", nos da una muy buena descripción del proceso para migrar aplicaciones, acompañado además con una lista de los cambios en las clases y funciones.
Estos documentos describen una herramienta proveída por Trolltech llamada qt3to4 que nos puede ayudar en el proceso de migrar las partes Qt de nuestro código de Qt3 a Qt4, usando funciones de compatibilidad. Ejecute qt3to4 así:
% $SVN/trunk/qt-copy/bin/qt3to4 [options] <Infile>, [Infile], ...
Infile puede ser tanto un fichero fuente como un fichero de proyecto. Si se especifica un fichero de proyecto, terminado en '.pro' o '.pri', qt3to4 portará todos los ficheros especificados en ese proyecto.
Para más información ejecute qt3to4 con la opción "--help" o visite la página "qt3to4-The Qt 3 to 4 Porting Tool".
Adicionalmente, existe un programa llamado remove-qt3-support.pl en el módulo kdesdk que buscará y reemplazará por usted muchas cosas Qt3.
Simplemente ejecute este programa sin ninguna opción adicional en el directorio de fuentes así:
% $SVN/trunk/KDE/kdesdk/scripts/qt4/remove-qt3-support.pl
Probablemente quedarán aún algunas clases Qt3 en el código, así que asegúrese de que en su fichero CMakeLists.txt del nivel superior estén definidas las macros para las cabeceras Qt QT3_SUPPORT y QT3_SUPPORT_WARNINGS de esta forma:
add_definitions (-DQT3_SUPPORT -DQT3_SUPPORT_WARNINGS)
API de KDE4
Mucho del esfuerzo al portar las aplicaciones consiste en simplemente renombrar ficheros de clases y cabeceras. Como puede ser muy tedioso cambiar todo esto a mano, existe un script en el directorio scripts/qt4 de kdesdk llamado adapt-to-kde4-api.pl. Este actualizará todos sus ficheros y creará un diff para que así pueda ver qué cambios se realizaron.
Una vez que esta simple sustitución de código se haya hecho, usted deberá aún editar el código para mudarse, por ejemplo, al nuevo KAction API. La documentación sobre todos los cambios en la API puede encontrarse en el fichero KDE4PORTING.html que se encuentra en el módulo kdelibs.
Ficheros UI de Qt Designer
Los ficheros ".ui" de Qt designer creados usando Qt3 deben ser convertidos al nuevo formato de Qt4. Esto se puede hacer usando el programa uic3 disponible en su instalación de Qt4.
% $SVN/trunk/qt-copy/bin/uic3 -convert file.ui > foo.ui
% mv foo.ui file.ui
O si prefiere una herramienta gráfica, puede usar el programa Qt4 designer.
% $SVN/trunk/qt-copy/bin/designer file.ui
(se puede sobreescribir el fichero file.ui, o si se prefiere guardar como uno nuevo)
Además debería ejecutar el programa fixuifiles de el módulo kdesdk, este realizará rutinas de limpieza y pruebas de consistencia sobre el código:
% $SVN/trunk/KDE/kdesdk/scripts/fixuifiles
D-Bus
En lugar de usar DCOP como KDE3, KDE4 ahora usa D-Bus para la comunicación entre sus procesos. La migración de DCOP a DBus es un tema que está ampliamente cubierto en detalle en el tutorial de migración a D-Bus tutorial de migración a D-Bus.
Para más información, por favor vea nuestros tutoriales sobre D-Bus.
Íconos
KDE4 usa la especificación de nombrado de íconos de freedesktop.org como base para nombrar sus íconos. Esto significa que tanto los íconos incluídos con KDE4 (Oxygen) como los componentes en las kdelibs que usan íconos, usan dicha especificación.
Portar su aplicación desde los nombres de ícono usados en KDE3 a los usados ahora en KDE4 es tan sencillo como ejecutar el script adapt-to-icon-spec.py ubicado en el directorio raíz de su proyecto y seguir las instrucciones en pantalla.
El script automáticamente convierte positivos confirmables (p.e. uso de KIcon o KIconLoader), evita negativos confirmables y pregunta sobre qué hacer con los posibles positivos. Este muestra los últimos en su contexto si así se desea y convierte la tarea en un simple asunto de presionar 'y' o 'n' para completar el proceso.
Internacionalización
Para crear su fichero ".pot", copie los comandos de la regla 'messages' ubicada en el Makefile.am de su proyecto en un script de línea de comandos que se llame Messages.sh. Puede asumir que las mismas variables aún existen ($PREPARETIPS, $XGETTEXT, $podir, etc.), pero tenga presente las diferencias de sintaxis existentes entre el Makefile y los scripts de línea de comandos. También hay que tener cuidado si se usa la opción "-k" con $XGETTEXT, podría tener que listar explícitamente todas las variantes que use. Por ejemplo, la creación de la regla 'messages':
messages: rc.cpp
rm -f tips.cpp
$(PREPARETIPS) > tips.cpp
$(XGETTEXT) -ktranslate *.cpp *.h -o $(podir)/kmail.pot
rm -f tips.cpp
Se transforma en el script Messages.sh:
#! /usr/bin/env bash
$PREPARETIPS > tips.cpp
$XGETTEXT -ktranslate:1,1t -ktranslate:1c,2,2t *.cpp *.h -o $podir/kmail.pot
rm -f tips.cpp
Qué hacer y qué no hacer
- NO use las antiguas reglas de las clases de sockets.
- NO use QPtrList, y en general, setAutoDelete().
- NO haga uso de operaciones matriciales.
- NO haga código que dibuje en widgets fuera de los eventos de dibujo.
- Intente no usar QHBox, QVBox, QGrid. Es preferible que use Layouts en su lugar.
- NO use frames de GroupBoxes, Labels o LineEdits para imitar un widget diferente. Use el widget apropiado. p.e., en vez de hacer que un Label tenga un sunken lineedit border, ¿por qué no usa un KLineEdit de solo lectura mejor? Y en vez de usar un KLineEdit sin borde para un widget copiable, use KActiveLabel.
- ¡NO use un GroupBox sin borde para agrupar widgets! Use un Layout.
Documentación
Otras fuentes de ayuda
- Canal #kde4-devel en el servidor irc.freenode.net.