Development/Tutorials/Using KXmlGuiWindow (pt BR)

    From KDE TechBase
    Revision as of 20:33, 29 June 2011 by Neverendingo (talk | contribs) (Text replace - "<code cppqt n>" to "<syntaxhighlight lang="cpp-qt" line>")
    The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


    Development/Tutorials/Using_KXmlGuiWindow

    Como usar o KXmlGuiWindow
    Série de Tutoriais   Tutorial para iniciantes
    Pré-requisitos   Tutorial 1 - Alô Mundo
    Qual é o próximo   Tutorial 3 - KActions e XMLGUI
    Leitura adicional   KXmlGuiWindow

    Resumo

    Este tutorial dá continuidade ao First Program Tutorial e introduzirá a classe KXmlGuiWindow.

    No tutorial anterior, o programa criava uma caixa de diálogo pop up, mas nós agora iremos andar alguns passos em direção ao funcionamento de uma aplicação.

    KXmlGuiWindow

    KXmlGuiWindow fornece a visão de uma janela principal inteira com barra de menus, barra de ferramentas, uma barra de status e uma área no centro para um widget grande. Muitas aplicações KDE derivam desta classe já que ela fornece um jeito fácil de definir o layout do menu e barra de ferramentas através de arquivos XML (esta tecnologia é chamada de XMLGUI). Por enquanto não usaremos o XMLGUI neste tutorial, mas nós o usaremos no próximo.

    In order to have a useful KXmlGuiWindow, we must subclass it. So we create two files, a mainwindow.cpp and a mainwindow.h which will contain our code.

    mainwindow.h

    <syntaxhighlight lang="cpp-qt" line>

    1. ifndef MAINWINDOW_H
    2. define MAINWINDOW_H
    1. include <KXmlGuiWindow>
    2. include <KTextEdit>

    class MainWindow : public KXmlGuiWindow {

     public:
       MainWindow(QWidget *parent=0);
    
     private:
       KTextEdit* textArea;
    

    };

    1. endif

    First we Subclass KXmlGuiWindow on line 7 with class MainWindow : public KXmlGuiWindow.

    Então nós declaramos o construtor com MainWindow(QWidget *parent=0);.

    And finally we declare a pointer to the object that will make up the bulk of our program. KTextEdit is a generic richtext editor with some KDE niceties like cursor auto-hiding.

    mainwindow.cpp

    <syntaxhighlight lang="cpp-qt" line>

    1. include "mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent) {

     textArea = new KTextEdit();
     setCentralWidget(textArea);
     setupGUI();
    

    } Primeiro, é claro, na linha 1 nós temos que incluir o arquivo de cabeçalho contendo a declaração da classe.

    Na linha 5, nós iniciamos nosso editor de texto com um objeto. Então na linha 6 nós usamos a função setCentralWidget() do KXmlGuiWindow a qual chama o KXmlGuiWindow que deverá aparecer na parte central da janela.

    Finalmente, KXmlGuiWindow::setupGUI() é chamado, a qual faz várias coisas por-trás-dos-bastidores e cria a barra de menu padrão (Configurações, Ajuda).

    De volta ao main.cpp

    No intuito de executar atualmente esta janela, nós adicionamos umas poucas linhas no main.cpp

    main.cpp

    <syntaxhighlight lang="cpp-qt" line>

    1. include <KApplication>
    2. include <KAboutData>
    3. include <KCmdLineArgs>
    1. include "mainwindow.h"

    int main (int argc, char *argv[]) {

     KAboutData aboutData( "tutorial2", 0,
         ki18n("Tutorial 2"), "1.0",
         ki18n("A simple text area"),
         KAboutData::License_GPL,
         ki18n("Copyright (c) 2007 Developer") );
     KCmdLineArgs::init( argc, argv, &aboutData );
     
     KApplication app;
    
     MainWindow* window = new MainWindow();
     window->show();
    
     return app.exec();
    

    } As únicas linhas novas aqui (comparadas com o Tutorial 1) são 5, 18 e 19. Na linha 18, nós criamos o nosso objeto MainWindow e então, na linha 19, nós a exibimos.

    CMake

    The best way to build the program is to use CMake. All that's changed since tutorial 1 is that mainwindow.cpp has been added to the sources list and any tutorial1 has become 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})

    Compile isto

    Para compilar, crias as ligações e rodar, use:

    mkdir build && cd build
    cmake ..
    make
    ./tutorial2
    

    Siga em frente

    Agora você pode ir ao tutorial usando KActions.