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

From KDE TechBase
No edit summary
 
(12 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=Perehdytys 2 - Main-ikkunan luonti|
name=Opas 2 - Main-ikkunan luonti|


pre=[[Development/Tutorials/First_program (fi)|Perehdytys 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]]
==Main-ikkuna==
==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}}-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ä'' perehdytyksessä emme kumminkaan vielä käytä XMLGUI:ta, vaan jätämme sen seuraavaan.
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.
 
Saadaksemme käyttökelpoisen Main-ikkunan, meidän tarvitsee alaluokittaa KXmlGuiWindow, joten luomme kaksi tiedostoa, <tt>mainwindow.cpp</tt> sekä <tt>mainwindow.h</tt>, joihin sijoitamme alla olevat koodit.


===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 42: Line 42:


#endif
#endif
</code>
</syntaxhighlight>
Ensin teemme KXmlGuiWindow-luokasta aliluokan rivillä 7: <tt>class MainWindow : public KXmlGuiWindow</tt>.
Ensin teemme KXmlGuiWindow-luokasta aliluokan rivill&auml; 7: <tt>class MainWindow : public KXmlGuiWindow</tt>.


Seuraavaksi luomme muodostajan: <tt>MainWindow(QWidget *parent=0);</tt>.
Seuraavaksi luomme muodostajan: <tt>MainWindow(QWidget *parent=0);</tt>.


Ja lopuksi luomme osoittimen joka osoittaa objektiin joka on pääosassa ohjelmaamme. {{class|KTextEdit}} on yleinen richtext-editori muutamilla KDE:n hienouksilla, kuten automaattinen kursorin piilottaminen.
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 59: Line 59:
   setupGUI();
   setupGUI();
}
}
</code>
</syntaxhighlight>
Ensimmäisenä, tietenkin, meidän tarvitsee sisällyttää otsikkotiedosto jossa mainwindow-luokka on esitelty.
Ensiksi on tietenkin sisällytettävä otsaketiedosto, jossa mainwindow-luokka on esitelty.


Rivillä 5 osoitetaan textArea uuteen richtext-editoriin. Seuraavaksi rivillä 6 kutsutaan KXmlGuiWindow-objektin sisäänrakennettua setCentralWidget()-funktiota joka kertoo KXmlGuiWindow-objektille että ikkunan keskialueella näytetään richtext-editori.
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.


Lopuksi kutsutaan KXmlGuiWindow::setupGUI()-funktiota joka huolehtii Main-ikkunan luomisessa tarvittavat asiat sekä luo oletusvalikot(Asetukset, Ohje).
Lopuksi kutsutaan KXmlGuiWindow::setupGUI()-funktiota, joka huolehtii Main-ikkunan luomisessa tarvittavista asioista, sek&auml; luo oletusvalikot (Asetukset, Ohje).
 
==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 92: 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 111: 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.