KDE TechBase
  • Page
  • Discussion
  • Edit
  • History
KDE TechBase is a Wiki - You can help! Please contribute! Questions?

Development/Tutorials/Using KActions (fi)

< Development | Tutorials

Languages: English | Dansk | Deutsch | Français | Italiano | Русский | Srpski | Slovenščina | Suomi | 简体中文 | Galego | Español | Esperanto | Svenska | 한국어 | Română | Brazilian Portuguese | Česky | عربي | فارسی | Polski | 日本語 | Українська

Opas 3 - KActions ja XMLGUI
Tutorial Series   Beginner Tutorial
Prerequisites   Opas 2 - main-ikkunan luonti, XML-perustietous
What's Next   Opas 4 - tallentaminen ja avaaminen
Further Reading   None

Contents

  • 1 Lyhyesti
  • 2 KAction
  • 3 Koodi
    • 3.1 main.cpp
    • 3.2 mainwindow.h
    • 3.3 mainwindow.cpp
  • 4 Selvitys
    • 4.1 KAction objektin luominen
    • 4.2 KAction:n ominaisuuksien asettelu
      • 4.2.1 Teksti
      • 4.2.2 Ikoni
      • 4.2.3 Pikanäppäinyhdistelmä
    • 4.3 Kokoelmaan lisääminen
      • 4.3.1 Toiminnon yhdistäminen
    • 4.4 KStandardAction
  • 5 Toiminnon lisääminen valikoihin ja työkaluriville
  • 6 XMLGUI
  • 7 ohjelmannimiui.rc - tiedosto
    • 7.1 tutorial3ui.rc
  • 8 CMake
    • 8.1 CMakeLists.txt
    • 8.2 Käännä, Asenna ja Suorita
  • 9 Seuraavaksi

[edit] Lyhyesti

Tämä opas esittelee toiminnot, engl. actions. Toiminnot tarjoavat yhtenäisen tavan vuorovaikuttaa ohjelman kanssa.

Jos esimerkiksi haluamme antaa oppaasssa 3 käyttäjlle mahdollisuuden tyhjentää tekstieditori hiiren näpäytyksellä työkaluriviltä Tiedosto-valikon kautta tai vaihtoehtoisesti äppäinyhdistelmän avulla, voidaan tämä toteuttaa helposti käyttämällä KAction-luokkaa.

[edit] KAction

KAction on objekti joka sisältää kaiken tarvittavan tiedon kuvakkeesta ja näppäinyhdistelmistä, jotka on liitetty johonkin toimintoon. Toiminto taas on yhdistetty slotiin, joka huolehtii toiminnon suorittamisesta.

[edit] Koodi

[edit] main.cpp

  1. #include <KApplication>
  2. #include <KAboutData>
  3. #include <KCmdLineArgs>
  4.  
  5. #include "mainwindow.h"
  6.  
  7. int main (int argc, char *argv[])
  8. {
  9. KAboutData aboutData( "tutorial3", "tutorial3",
  10. ki18n("Tutorial 3"), "1.0",
  11. ki18n("A simple text area using KAction etc."),
  12. KAboutData::License_GPL,
  13. ki18n("Copyright (c) 2007 Developer") );
  14. KCmdLineArgs::init( argc, argv, &aboutData );
  15. KApplication app;
  16.  
  17. MainWindow* window = new MainWindow();
  18. window->show();
  19. return app.exec();
  20. }

Tällä kerralla muutokset tähän tiedostoon ovat hyvin vähäisiä. Ainoastaan "tutorial 2" on korjattu "tutorial 3".

[edit] mainwindow.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3.  
  4. #include <KXmlGuiWindow>
  5. #include <KTextEdit>
  6.  
  7. class MainWindow : public KXmlGuiWindow
  8. {
  9. public:
  10. MainWindow(QWidget *parent=0);
  11. private:
  12. KTextEdit* textArea;
  13. void setupActions();
  14. };
  15.  
  16. #endif

Otsikkotiedostoon on lisätty void setupActions(), jossa tehdään kaikki tarvittavat asettelut toimintoa varten.

[edit] mainwindow.cpp

  1. #include "mainwindow.h"
  2.  
  3. #include <KApplication>
  4. #include <KAction>
  5. #include <KLocale>
  6. #include <KActionCollection>
  7. #include <KStandardAction>
  8.  
  9. MainWindow::MainWindow(QWidget *parent)
  10.  : KXmlGuiWindow(parent)
  11. {
  12. textArea = new KTextEdit;
  13. setCentralWidget(textArea);
  14.  
  15. setupActions();
  16. }
  17.  
  18. void MainWindow::setupActions()
  19. {
  20. KAction* clearAction = new KAction(this);
  21. clearAction->setText(i18n("Clear"));
  22. clearAction->setIcon(KIcon("document-new"));
  23. clearAction->setShortcut(Qt::CTRL + Qt::Key_W);
  24. actionCollection()->addAction("clear", clearAction);
  25. connect(clearAction, SIGNAL(triggered(bool)),
  26. textArea, SLOT(clear()));
  27.  
  28. KStandardAction::quit(kapp, SLOT(quit()),
  29. actionCollection());
  30.  
  31. setupGUI();
  32. }

[edit] Selvitys

Tämä perehdytys perustuu edelliseen perehdytykseen. Suurin osa koodimuutoksista on mainwindow.cpp tiedostossa. Muodostajassa kutsutaan nyt setupActions() setupGUI() sijaan. setupActions():ssa sijaitsee uusi KAction-koodi, joka lopuksi kutsuu setupGUI()-funktiota.

[edit] KAction objektin luominen

KActionin käyttöönotossa on muutamia vaiheita. Ensimmäinen on sisällyttää KAction-kirjasto ja luoda uusi KAction:

#include <KAction>
...
KAction* clearAction = new KAction(this);

[edit] KAction:n ominaisuuksien asettelu

[edit] Teksti

Nyt meillä siis on KAction objekti, joten voimme alkaa muokkaamaan sen ominaisuuksia. Seuraava koodi asettaa tekstin, joka näytetään valikossa sekä työkaluvalikossa olevan kuvakkeen alapuolella.

clearAction->setText(i18n("Clear"));

Huomaa että teksti on syötetty i18n()-funktion läpi. Tämä on välttämätöntä jotta käyttöliittymä on käännettävissä eri kielille. Lisätietoja lokalisoinnista löytyy i18n perehdytyksestä).

[edit] Ikoni

Jos toiminto on tarkoitus näyttää työkalurivillä, olisi hyvä jos sillä olisi toimintoa kuvaava ikoni. Seuraava koodi asettaa standardin KDE document-new(Uusi asiakirja) -kuvakkeen clearAction toiminnolle:

clearAction->setIcon(KIcon("document-new"));

[edit] Pikanäppäinyhdistelmä

Pikanäppäinyhdistelmän asettaminen toiminnollemme on yhtälailla helppo. Seuraava koodi osoittaa yhdistelmän Ctrl+W clearAction toiminnolle:

clearAction->setShortcut(Qt::CTRL + Qt::Key_W);

[edit] Kokoelmaan lisääminen

Jotta toimintoon olisi mahdollista päästä käsiksi XMLGUI-kehyksen (selitetään tarkemmin myöhemmin) kautta, se pitää lisätä ohjelman toimintokokoelmaan. Toimintokokoelmaa käsitellään actionCollection()-funktion avulla seuraavasti:

actionCollection()->addAction("clear", clearAction);

Tässä clearAction KAction on lisätty kokoelmaan nimellä clear. Nimeä (clear) käytetään XMLGUI-kehyksessä kuvaamaan tätä toimintoa.

[edit] Toiminnon yhdistäminen

Kun toiminto on asetettu kuntoon, se pitää yhdistää johonkin, joka toteuttaa toiminnon. Tässä tapauksessa (koska haluamme tyhjentää tekstialueen), yhdistämme toiminnon KTextEdit:n kuuluvaan clear()-funktioon (joka tyhjentää tekstialueen) seuraavasti:

connect( clearAction, SIGNAL( triggered(bool) ), 
         textArea, SLOT( clear() ) );

Tämä sama voidaan tehdä Qt:n kanssa käyttämällä QAction.

[edit] KStandardAction

Lähes jokaisessa KDE-ohjelmassa esiintyviä toimintoja varten (esim. 'sulje', 'tallenna' ja 'avaa') on olemassa valmiita toimintoja, jotka ovat käytettävissä KStandardAction:n avulla.

Nämä ovat erittäin helppoja ottaa käyttöön. Kun ensin on otettu kirjasto käyttöön (#include <KStandardAction>), tarvitsee vain ottaa haluttu toiminto käyttöön, esim:

KStandardAction::quit(kapp, SLOT(quit()), actionCollection());

Tämä luo Lopeta-toiminnon, oikean kuvakkeen, tekstin ja pikanäppäinyhdistelmän kanssa. Toiminto myös lisätään Tiedosto-valikkoon.

[edit] Toiminnon lisääminen valikoihin ja työkaluriville

Tällä hetkellä uusi "Tyhjennä" toiminto on luotu. Sitä ei kuitenkaan ole vielä yhdistetty yhteenkään valikkoon tai työkaluriviin. Tähän tarkoitukseen käytämme XMLGUI-nimistä KDE-tekniikkaa. Sen avulla voidaan toteuttaa esimerkiksi siirrettävät työkalurivit.


Note
noframe
Myöhemmissä KDE4 versioisssa XMLGUI-kehys saatetaan vaihtaa liveui-kehykseen, mutta tällä hetkellä XMLGUI on ainoa oikea tapa asettaa käyttöliittymä


[edit] XMLGUI

KXmlGuiWindow:n setupGUI()-funktion käyttöliittymän muodostus on riippuvainen XMLGUI-järjestelmästä, joka hakee XML-tiedostosta käyttöliittymän muodostuksessa tarvittavat tiedot.

XML-tiedoston nimeämissäännöt ovat riippuvaisia ohjelmannimestä, joka on asetettu KAboutData:ssa (tässä tapauksessa tutorial3) siten että XML-tiedostonimi muodostuu: ohjelmannimi + ui.rc (tässä tapauksessa siis tutorial3ui.rc).

[edit] ohjelmannimiui.rc - tiedosto

Koska käyttöliittymä on määritelty XML-tiedoston avulla, ulkoasun täytyy noudattaa tiettyjä sääntöjä. Tämä opas ei paneudu kovin syvällisesti tähän aiheeseen. Lisätietoja: XMLGUI - Tekniikka(tulossa ?).

[edit] tutorial3ui.rc

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
  3. <gui name="tutorial3" version="1">
  4. <ToolBar name="mainToolBar" >
  5. <text>Main Toolbar</text>
  6. <Action name="clear" />
  7. </ToolBar>
  8. <MenuBar>
  9. <Menu name="file" >
  10. <Action name="clear" />
  11. </Menu>
  12. </MenuBar>
  13. </gui>

<Toolbar>-kohdassa kuvaillaan ikkunan yläosassa, yleensä kuvakkein varusteltu, vaakasuuntainen laidasta laitaan sijaitseva työkalurivi. Tässä tapauksessa työkaluriville on annettu yksilöllinen nimi mainToolBar ja sen näkyvä nimi on asetettu <text>-merkinnällä Main Toolbar:ksi. Tyhjennä-toiminto on asetettu työkaluriville <Action>-merkinnän avulla. Toiminnon nimi on sama, kuin mikä aikaisemmin lisättiin addAction()-funktion avulla toimintokokoelmaan mainwindow.cpp-tiedostossa.

Toiminto on mahdollista lisätä myös valikkoriville. Tässä tapauksessa toiminto Tyhjennä on lisätty Tiedosto(File)-valikkoon, samalla tavalla kuin se lisättiin työkaluriville.

Muista vaihtaa 'version'-määrite(versionumero) <gui>-merkinnästä jos muutat .rc-tiedostoa saattaaksesi viimeisimmän asennuksen mukaisen version järjestelmän välimuistiin.

[edit] CMake

Lopuksi tutorial3ui.rc-tiedosto täytyy sijoittaa paikkaan, josta KDE voi sen löytää (tiedostoa ei siis voi pelkästään jättää lähdehakemistoon). Tämä tarkoittaa että tämä projekti on asennettava johonkin.

[edit] CMakeLists.txt

  1. project(tutorial3)
  2.  
  3. find_package(KDE4 REQUIRED)
  4. include_directories(${KDE4_INCLUDES})
  5.  
  6. set(tutorial3_SRCS
  7. main.cpp
  8. mainwindow.cpp
  9. )
  10.  
  11. kde4_add_executable(tutorial3 ${tutorial3_SRCS})
  12.  
  13. target_link_libraries(tutorial3 ${KDE4_KDEUI_LIBS})
  14.  
  15. install(TARGETS tutorial3 DESTINATION ${BIN_INSTALL_DIR})
  16. install(FILES tutorial3ui.rc
  17. DESTINATION ${DATA_INSTALL_DIR}/tutorial3)

Tämä tiedosto on lähes identtinen Perehdytys 2:n vastaavan kanssa. Ainoastaan tiedoston loppuun on lisätty kaksi uutta riviä, jotka kertovat minne tiedostot tulee asentaa. tutorial3(suoritettava binääri, ohjelma) asennetaan hakemistoon, joka on määritelty BIN_INSTALL_DIR-muuttujassa ja tutorial3ui.rc-tiedosto, joka siis määrittelee ohjelman ulkoasun, asennetaan ohjelman data-hakemistoon.

[edit] Käännä, Asenna ja Suorita

Jos sinulla ei ole kirjoitusoikeutta KDE4:n asennushakemistoon, voit asentaa ohjelmasi myös kotikansiossa olevaan hakemistoon.

Kertoaksesi CMakelle, minne ohjelma asennetaan, tarvitsee käyttää DCMAKE_INSTALL_PREFIX -valitsinta. Luultavasti haluat asentaa nämä tiedostot kotihakemistoosi (KDE-asennushakemisto on oletuksena asennushakemisto), joten ehdotan seuraavaa:

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/kde4_harjoittelu
make install
$HOME/kde4_harjoittelu/bin/tutorial3

Ylläoleva luo KDE-hakemistorakenteen kotihakemistosi kde_harjoittelu-hakemiston alle, sekä asentaa ohjelman sinne oikeille paikoilleen.

[edit] Seuraavaksi

Nyt olet valmis siirtymään eteenpäin Perehdytys 4 - Tallentaminen ja Avaaminen-kohtaan.

Retrieved from "http://techbase.kde.org/Development/Tutorials/Using_KActions_%28fi%29"

Categories: Tutorial | C++

Navigation

  • Home
  • Help
  • Recent changes

Sections

  • Getting started
  • Development
  • Schedules
  • Policies
  • Contribute
  • Projects

Toolbox

  • What links here
  • Related changes
  • Upload file
  • Special pages
  • Printable version
  • Permanent link

Personal tools

  • Log in / create account
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. Qt® and Trolltech® are registered trademarks of Trolltech ASA. Linux® is a registered Trademark of Linus Torvalds. | Legal