Development/Tutorials/Using KXmlGuiWindow (fi): Difference between revisions

From KDE TechBase
No edit summary
 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|Development/Tutorials/Using_KXmlGuiWindow}}
 
{{TutorialBrowser|
{{TutorialBrowser|


series=Beginner Tutorial|
series=Beginner Tutorial|


name=Main-ikkunan luonti|
name=Opas 2 - Main-ikkunan luonti|


pre=[[Development/Tutorials/First_program (fi)|Tutorial 1 - Hei maailma!]]|
pre=[[Development/Tutorials/First_program (fi)|Opas 1 - Hei maailma!]]|


next=[[Development/Tutorials/Using_KActions|Tutorial 3 - KActions and XMLGUI]]|  
next=[[Development/Tutorials/Using_KActions (fi)|Opas 3 - KActions ja XMLGUI]]|  


reading={{class|KXmlGuiWindow}}
reading={{class|KXmlGuiWindow}}
Line 14: Line 14:


==Lyhyesti==
==Lyhyesti==
Tämä perehdytys jatkaa [[Development/Tutorials/First_program (fi)|Hei Maailma]]-perehdytyksestä perehdyttäen {{class|KXmlGuiWindow}}-luokan käyttöön Main-ikkunan luomiseksi.
Tämä perehdytys jatkaa [[Development/Tutorials/First_program (fi)|Hei Maailma]]-oppaasta ja tutustuttaa Main-ikkunan luomiseen {{class|KXmlGuiWindow}}-luokan avulla.


Edellisessä perehdytyksessä käytimme ikkunan luomiseksi pop-up-ikkuna tyylistä valintaikkunaa mutta tässä on tarkoitus siirtyä askel lähemmäksi käyttökelpoista ohjelmaa.
Edellisessä oppaassa käytimme ikkunan luomiseksi pop-up-ikkunan tyylistä valintaikkunaa. Nyt on tarkoitus siirtyä askel lähemmäksi käyttökelpoista ohjelmaa.
[[image:introtokdetutorial2.png|frame|center]]
[[image:introtokdetutorial2.png|frame|center]]


==KXmlGuiWindow==
==Main-ikkuna==
 
{{class|KXmlGuiWindow}}-luokka tuottaa oikean Main-ikkunan, valikko-, työkalu- ja tilariveineen sekä tarjoaa keskelle tilan suurelle vimpaimelle (''widget''). Suurin osa KDE:n ohjelmista on sovellettu tästä luokasta. {{class|KXmlGuiWindow}}-luokka tarjoaa yksinkertaisen tavan määritellä valikko- ja työkalurivit halutunlaisiksi XML-tiedostojen avulla (tämä tekniikka on nimeltään XMLGUI). ''Tässä'' oppaassa emme vielä käytä XMLGUI:ta, vaan jätämme sen seuraavaan.
{{class|KXmlGuiWindow}} provides a full main window view with menubars, toolbars, a statusbar and a main area in the centre for a large widget. Most KDE applications will derive from this class as it provides an easy way to define menu and toolbar layouts through XML files (this technology is called XMLGUI). While we will not be using XMLGUI in ''this'' tutorial, we will use it in the next.


In order to have a useful KXmlGuiWindow, we must subclass it. So we create two files, a <tt>mainwindow.cpp</tt> and a <tt>mainwindow.h</tt> which will contain our code.
Saadaksemme k&auml;ytt&ouml;kelpoisen Main-ikkunan on KXmlGuiWindow alaluokitettava. Siksi luomme kaksi tiedostoa, <tt>mainwindow.cpp</tt> sek&auml; <tt>mainwindow.h</tt>, joihin alla oleva koodi sijoitetaan.


===mainwindow.h===
===mainwindow.h===
<code cppqt n>
<syntaxhighlight lang="cpp-qt" line>
#ifndef MAINWINDOW_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#define MAINWINDOW_H
Line 43: Line 42:


#endif
#endif
</code>
</syntaxhighlight>
First we Subclass KXmlGuiWindow on line 7 with <tt>class MainWindow : public KXmlGuiWindow</tt>.
Ensin teemme KXmlGuiWindow-luokasta aliluokan rivill&auml; 7: <tt>class MainWindow : public KXmlGuiWindow</tt>.


Then we declare the constructor with <tt>MainWindow(QWidget *parent=0);</tt>.
Seuraavaksi luomme muodostajan: <tt>MainWindow(QWidget *parent=0);</tt>.


And finally we declare a pointer to the object that will make up the bulk of our program. {{class|KTextEdit}} is a generic richtext editor with some KDE niceties like cursor auto-hiding.
Lopuksi luomme osoittimen, joka osoittaa objektiin, joka on p&auml;&auml;osassa ohjelmaamme. {{class|KTextEdit}} on yleiskäyttöinen editori muotoiltua tekstiä varten. Siinä osaa muutamia KDE:n hienouksia, kuten automaattisen kohdistimen piilottamisen.


===mainwindow.cpp===
===mainwindow.cpp===
<code cppqt n>
<syntaxhighlight lang="cpp-qt" line>
#include "mainwindow.h"
#include "mainwindow.h"


Line 60: Line 59:
   setupGUI();
   setupGUI();
}
}
</code>
</syntaxhighlight>
First, of course, on line 1 we have to include the header file containing the class declaration.
Ensiksi on tietenkin sisällytettävä otsaketiedosto, jossa mainwindow-luokka on esitelty.
 
Rivill&auml; 5 osoitetaan textArea uuteen muotoillun tekstin editoriin. Seuraavaksi rivill&auml; 6 kutsutaan KXmlGuiWindow-objektin sis&auml;&auml;nrakennettua setCentralWidget()-funktiota, joka kertoo KXmlGuiWindow-objektille, ett&auml; ikkunan keskialueella n&auml;ytet&auml;&auml;n editori.


On line 5, we initialise our text editor with an object. Then on line 6 we use KXmlGuiWindow's built-in setCentralWidget() function which tells the KXmlGuiWindow what should appear in the central section of the window.
Lopuksi kutsutaan KXmlGuiWindow::setupGUI()-funktiota, joka huolehtii Main-ikkunan luomisessa tarvittavista asioista, sek&auml; luo oletusvalikot (Asetukset, Ohje).


Finally, KXmlGuiWindow::setupGUI() is called which does a lot of behind-the-scenes stuff and creates the default menu bars (Settings, Help).
==J&auml;lleen kerrran - main.cpp==
Saadaksemme Main-ikkunan k&auml;ytt&ouml;&ouml;n pit&auml;&auml; vielä lis&auml;t&auml; muutama rivi edellisen oppaan main.cpp-tiedostoon:


==Back to main.cpp==
In order to actually run this window, we need to add a few lines in main.cpp:
===main.cpp===
===main.cpp===
<code cppqt n>
<syntaxhighlight lang="cpp-qt" line>
#include <KApplication>
#include <KApplication>
#include <KAboutData>
#include <KAboutData>
Line 93: Line 93:
   return app.exec();
   return app.exec();
}
}
</code>
</syntaxhighlight>
The only new lines here (compared to Tutorial 1) are 5, 18 and 19. On line 18, we create our MainWindow object and then on line 19, we display it.
Perehdytys 1 verrattuna uudet rivit ovat 5,18 ja 19. Rivill&auml; 18 luomme MainWindow-objektin ja rivill&auml; 19 se piirret&auml;&auml;n ruudulle.


==CMake==
==CMake==
The best way to build the program is to use CMake. All that's changed since tutorial 1 is that <tt>mainwindow.cpp</tt> has been added to the sources list and any <tt>tutorial1</tt> has become <tt>tutorial2</tt>.
Paras tapa k&auml;&auml;nt&auml;&auml; ohjelma on k&auml;ytt&auml;&auml; CMakea. Ainoat muutokset oppaaseen 1 n&auml;hdeon on, ett&auml; <tt>mainwindow.cpp</tt> on lis&auml;tty l&auml;hdekoodilistaan ja <tt>tutorial1</tt> on muutettu <tt>tutorial2</tt>.
 
===CMakeLists.txt===
===CMakeLists.txt===
<code ini n>
<syntaxhighlight lang="ini" line>
project (tutorial2)
project (tutorial2)


Line 112: Line 113:
kde4_add_executable(tutorial2 ${tutorial2_SRCS})
kde4_add_executable(tutorial2 ${tutorial2_SRCS})
target_link_libraries(tutorial2 ${KDE4_KDEUI_LIBS})
target_link_libraries(tutorial2 ${KDE4_KDEUI_LIBS})
</code>
</syntaxhighlight>


===Compile it===
===K&auml;&auml;nt&auml;minen ja suoritus===
To compile, link and run it, use:
K&auml;&auml;nn&auml;, linkit&auml; ja suorita seuraavasti:
mkdir build && cd build
<syntaxhighlight lang="text">
cmake ..
mkdir build && cd build
make
cmake ..
./tutorial2
make
./tutorial2
</syntaxhighlight>


==Moving On==
==Seuraavaksi==
Now you can move on to [[Development/Tutorials/Using_KActions|using KActions]].
Seuraavaksi voit siirty&auml; kohtaan [[Development/Tutorials/Using_KActions (fi)|Perehdytys 3 - KActions ja XMLGUI]].


[[Category:C++]]
[[Category:C++]]

Latest revision as of 09:44, 15 July 2012

Opas 2 - Main-ikkunan luonti
Tutorial Series   Beginner Tutorial
Previous   Opas 1 - Hei maailma!
What's Next   Opas 3 - KActions ja XMLGUI
Further Reading   KXmlGuiWindow

Lyhyesti

Tämä perehdytys jatkaa Hei Maailma-oppaasta ja tutustuttaa Main-ikkunan luomiseen KXmlGuiWindow-luokan avulla.

Edellisessä oppaassa käytimme ikkunan luomiseksi pop-up-ikkunan tyylistä valintaikkunaa. Nyt on tarkoitus siirtyä askel lähemmäksi käyttökelpoista ohjelmaa.

Main-ikkuna

KXmlGuiWindow-luokka tuottaa oikean Main-ikkunan, valikko-, työkalu- ja tilariveineen sekä tarjoaa keskelle tilan suurelle vimpaimelle (widget). Suurin osa KDE:n ohjelmista on sovellettu tästä luokasta. KXmlGuiWindow-luokka tarjoaa yksinkertaisen tavan määritellä valikko- ja työkalurivit halutunlaisiksi XML-tiedostojen avulla (tämä tekniikka on nimeltään XMLGUI). Tässä oppaassa emme vielä käytä XMLGUI:ta, vaan jätämme sen seuraavaan.

Saadaksemme käyttökelpoisen Main-ikkunan on KXmlGuiWindow alaluokitettava. Siksi luomme kaksi tiedostoa, mainwindow.cpp sekä mainwindow.h, joihin alla oleva koodi sijoitetaan.

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

Ensin teemme KXmlGuiWindow-luokasta aliluokan rivillä 7: class MainWindow : public KXmlGuiWindow.

Seuraavaksi luomme muodostajan: MainWindow(QWidget *parent=0);.

Lopuksi luomme osoittimen, joka osoittaa objektiin, joka on pääosassa ohjelmaamme. KTextEdit on yleiskäyttöinen editori muotoiltua tekstiä varten. Siinä osaa muutamia KDE:n hienouksia, kuten automaattisen kohdistimen piilottamisen.

mainwindow.cpp

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent)
{
  textArea = new KTextEdit();
  setCentralWidget(textArea);
  setupGUI();
}

Ensiksi on tietenkin sisällytettävä otsaketiedosto, jossa mainwindow-luokka on esitelty.

Rivillä 5 osoitetaan textArea uuteen muotoillun tekstin editoriin. Seuraavaksi rivillä 6 kutsutaan KXmlGuiWindow-objektin sisäänrakennettua setCentralWidget()-funktiota, joka kertoo KXmlGuiWindow-objektille, että ikkunan keskialueella näytetään editori.

Lopuksi kutsutaan KXmlGuiWindow::setupGUI()-funktiota, joka huolehtii Main-ikkunan luomisessa tarvittavista asioista, sekä luo oletusvalikot (Asetukset, Ohje).

Jälleen kerrran - main.cpp

Saadaksemme Main-ikkunan käyttöön pitää vielä lisätä muutama rivi edellisen oppaan main.cpp-tiedostoon:

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("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();
}

Perehdytys 1 verrattuna uudet rivit ovat 5,18 ja 19. Rivillä 18 luomme MainWindow-objektin ja rivillä 19 se piirretään ruudulle.

CMake

Paras tapa kääntää ohjelma on käyttää CMakea. Ainoat muutokset oppaaseen 1 nähdeon on, että mainwindow.cpp on lisätty lähdekoodilistaan ja tutorial1 on muutettu 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})

Kääntäminen ja suoritus

Käännä, linkitä ja suorita seuraavasti:

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

Seuraavaksi

Seuraavaksi voit siirtyä kohtaan Perehdytys 3 - KActions ja XMLGUI.