Development/Tutorials/Using KXmlGuiWindow (es)
Development/Tutorials
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
Tutorial Series | Beginner Tutorial |
Previous | Tutorial 1 - ¡Hola mundo! |
What's Next | Tutorial 3 - KActions y XmlGui |
Further Reading | KXmlGuiWindow |
Descripción
Este tutorial continúa la travesía, emprendida desde el precedente ¡Hola mundo!, analizando, esta vez, la clase KXmlGuiWindow.
En el tutorial anterior vimos cómo la aplicación lanzaba una caja de diálogo, pero en este caso nos adentraremos en producir una aplicación más funcional.
Utilizando KXmlGuiWindow
En virtud de lograr una instancia KXmlGuiWindow útil, tendremos que heredarla en una nueva clase, donde añadiremos las funcionalidades pertinentes que deseemos para la aplicación. Crearemos dos ficheros: mainwindow.cpp y mainwindow.h, que contendrán el código. Así, nuestra nueva clase heredará desde KXmlGuiWindow, ya que emplea XML (por ejemplo, para establecer la estructura de los menús).
mainwindow.h
- ifndef MAINWINDOW_H
- define MAINWINDOW_H
- include <KXmlGuiWindow>
- include <KTextEdit>
class MainWindow : public KXmlGuiWindow
{
public:
MainWindow(QWidget *parent=0);
private:
KTextEdit* textArea;
};
- endif
Primeramente heredamos nuestra nueva clase, en la línea 7, con la sentencia: class MainWindow : public KXmlGuiWindow.
Declaramos el constructor: MainWindow(QWidget *parent=0);.
Y para terminar, declaramos un puntero al objeto que hará de contexto principal en nuestra aplicación. KTextEdit es una clase que representa un editor de texto enriquecido, acompañado de algunas sutilezas, como el ocultamiento automático de cursor, entre otras.
mainwindow.cpp
- include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent)
{
textArea = new KTextEdit;
setCentralWidget(textArea);
setupGUI();
}
Por supuesto, en la primera línea debemos incluir la cabecera que contiene la declaración de la nueva clase.
En la línea 5, inicializamos el puntero a un nuevo objeto KTextEdit, a través de new. Luego, en la línea 6, usamos la función heredada setCentralWidget(), quien comunica a la instancia KXmlGuiWindow que el editor de texto debe estar ubicado en la sección central de la ventana.
Terminamos con el llamado a la función KXmlGuiWindow::setupGUI(), la cual preconfigura la interfaz de usuario y crea las barras de menú por defecto (Preferencias, Ayuda).
Fichero principal - main.cpp
Para terminar la aplicación, debemos primero agregar unas pocas líneas al fichero main.cpp:
main.cpp
- include <KApplication>
- include <KAboutData>
- include <KCmdLineArgs>
- include "mainwindow.h"
int main (int argc, char *argv[])
{
KAboutData aboutData( "tutorial2", 0,
ki18n("Tutorial 2"), "1.0",
ki18n("Simple Área de Texto"),
KAboutData::License_GPL,
ki18n("Copyright (c) 2007 Developer") );
KCmdLineArgs::init( argc, argv, &aboutData );
KApplication app;
MainWindow* window = new MainWindow();
window->show();
return app.exec();
}
Las únicas que nos refieren novedad (tomando en cuenta el primer tutorial) son las líneas 18 y 19. En la linea 18 creamos una instancia MainWindow, nuestra nueva clase heredada de KXmlGuiWindow, y en la 19 la mostramos.
CMake
La mejor forma de construir el programa es usando CMake. Lo único que ha cambiado, en comparación al anterior tutorial, es que mainwindow.cpp ha sido añadida a la lista de ficheros fuente, y tutorial1 se ha renombrado a tutorial2.
CMakeLists.txt
project (tutorial2)
find_package(KDE4 REQUIRED)
include_directories( ${KDE4_INCLUDES} )
set(tutorial2_SRCS
main.cpp
mainwindow.cpp
)
kde4_add_executable(tutorial2 ${tutorial2_SRCS})
target_link_libraries( tutorial2 ${KDE4_KDEUI_LIBS})
Compilación
Para compilar, enlazar y correr, a la vez, la aplicación:
cmake . && make && ./tutorial2