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

From KDE TechBase
No edit summary
 
(9 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älleen kerrran - main.cpp==
==J&auml;lleen kerrran - main.cpp==
Jotta saisimme otettua Main-ikkunan käyttöön, pitää lisätä muutama rivi edellisen perehdytyksen main.cpp-tiedostoon:
Saadaksemme Main-ikkunan k&auml;ytt&ouml;&ouml;n pit&auml;&auml; vielä lis&auml;t&auml; muutama rivi edellisen oppaan main.cpp-tiedostoon:


===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>
Perehdytys 1 verrattuna uudet rivit ovat 5,18 ja 19. Rivillä 18 luomme MainWindow-objektin ja rivillä 19 se piirretään ruudulle.
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==
Paras tapa kääntää ohjelma on käyttää CMakea. Ainoat muutokset Perehdytys 1 nähdeon on että <tt>mainwindow.cpp</tt> on lisätty lähdekoodilistaan ja <tt>tutorial1</tt> on muutettu <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 113: 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>


===Kääntäminen ja suoritus===
===K&auml;&auml;nt&auml;minen ja suoritus===
Käännä, linkitä ja suorita seuraavasti:
K&auml;&auml;nn&auml;, linkit&auml; ja suorita seuraavasti:
<code>
<syntaxhighlight lang="text">
mkdir build && cd build
mkdir build && cd build
cmake ..
cmake ..
make
make
./tutorial2
./tutorial2
</code>
</syntaxhighlight>


==Seuraavaksi==
==Seuraavaksi==
Seuraavaksi voit siirtyä kohtaan [[Development/Tutorials/Using_KActions|Perehdytys 3 - KActions ja XMLGUI]].
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.