[Kde-devel-es] Dudas muy basicas
Ignacio Cárdenas
kde-devel-es@mail.kde.org
Tue, 10 Dec 2002 23:22:24 +0100
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hola!
> Unas pequeñas dudas sobre el manual de antonio larrosa y de c++
>
> -Del manual de antonio
> QPopupMenu *filemenu = new QPopupMenu;
> Bien, este paso lo entiendo... pero lo que no acabo de ver
> es porque no usamos el mismo metodo para crear el menu horizontal
> es decir asignado memoria con el new y esas cosas, y no como hace
> con el kmenubar
>
> KMenuBar *menu = menuBar();
Aquí lo que tenemos es un puntero a KMenuBar llamado 'menu'. Claro, al
principio ese puntero no apunta a nada, y si queremos que apunte a un objeto
nuevo, pues habrá que crearlo y asignarle memoria con el operador 'new'. Sin
embargo este no es el caso, ya que 'menu' apunta a un objeto que ya existía,
y no hace falta crearlo ni asignarle memoria... me imagino que si le hechas
un vistazo al código del método de 'menuBar()' te encontarás algo similar a
esto:
KMenuBar mimenu = new KMenuBar();
........................
return mimenu;
De este modo, el método devuelve un objeto de tipo KMenuBar al que ya se le ha
asignado la memoria. Cuado luego hacemos
KMenuBar *menu = menuBar();
tan sólo creamos un puntero que apunte a ese bloque de memoria que ya existía.
> -En el tutorial de las QT:
>
> class MyWidget : public QWidget
> .....
> .....
> .....
> MyWidget::MyWidget( QWidget *parent, const char *name )
>
> : QWidget( parent, name )
>
> ^^^^^^^^^^^^^^^^^^^^^^^
>
> |___ es necesario volver a decir que clase hereda?
No, eso no es lo que hace... El primer código que has puesto dice que la clase
MyWidget hereda de QWidget, pero la siguiente linea lo que hace es llamar al
constructor de la clase QWidget con los parámetros 'parent' y 'name'. Esta es
una estructura que se sule utilizar en las clases que heredan: se llama al
constructor del padre para ahorrarte trabajo en la inicialización de las
variables del propio padre.
> -Una de c++
> No acabo de ver porque en determinados momentos hemos de acceder
> a ciertas funciones con los dos puntos (::),en vez de con un simple
> punto.
>
> ej: KFileDialog::getOpenURL ();
No estoy seguro, pero creo que eso sólo se puede hacer con los métodos
estáticos... estos son lo que puedes llamar indicando el nombre de la clase a
la que pertenecen, pero no necesitas crear una instancia de la clase. En este
caso concreto, el método 'getOpenURL()' debe ser estático, y no necesitamos
instanciar la clase 'KFileDialog' para usarlo, es decir, no necesitamos hacer
esto:
KFileDialog dialog = new KFileDialog();
dialog.getOpenURL();
Un saludo,
Ignacio.
- --
"La capacidad de decidir por nosotros mismos es la única libertad que
realmente tenemos... Usa esa libertad."
========================
//->Ignacio Cárdenas Díaz<-//
========================
iakynet@eresmas.com
Linux user #286387 -- http://counter.li.org
- ----------------------------------
Dpto. Lenguajes y Sistemas Informáticos, UNED.
icardenas@bec.uned.es
http://www.lsi.uned.es
- ----------------------------------
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.0 (GNU/Linux)
iD8DBQE99mklkC21d1l2YQURAifgAJ9lsihDxaKVGQSmoET0CaCmo4wYOQCgq0In
/9ylb4zGltYBcDLM7MpCGrs=
=V9Qb
-----END PGP SIGNATURE-----