Development/Tutorials/Plasma4/GettingStarted

From KDE TechBase
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.
Creating your first Plasmoid
Tutorial Series   Plasma Tutorial
Previous   C++, Qt, KDE4 development environment
What's Next  
Further Reading   CMake

Abstract

Where going to start creating a simple plasmoid in this tutorial, to keep things simple we will only create a static plasmoid, it will contain the following items.

  • SVG Background
  • Icon
  • Some nice text

The Code

Plasmoids require a .desktop file to tell plasma how they should be started, so we will start with that.

plasma-applet-tutorial1.desktop [Desktop Entry] Encoding=UTF-8 Name=Tutorial 1 Comment=Plasma Tutorial 1 Type=Service ServiceTypes=Plasma/Applet

X-KDE-Library=plasma_applet_tutorial1 X-KDE-PluginInfo-Author=Bas Grolleman [email protected] X-KDE-PluginInfo-Name=plasma_applet_tutorial1 X-KDE-PluginInfo-Version=0.1 X-KDE-PluginInfo-Website=http://plasma.kde.org/ X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true

plasma-tutorial1.h // Here we avoid loading the header multiple times

  1. ifndef Tutorial1_HEADER
  2. define Tutorial1_HEADER

// Ofcourse, we need the plasma headers

  1. include <Plasma/Applet>

class PlasmaTutorial1 : public Plasma::Applet {

   Q_OBJECT
   public:
       PlasmaTutorial1(QObject *parent, const QStringList &args);
       ~PlasmaTutorial1();
               // This is the size of your applet
       QRectF boundingRect() const;
               // This paints your applet to the screen
       void paintInterface(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget =0);

};

K_EXPORT_PLASMA_APPLET(tutorial1, PlasmaTutorial1)

  1. endif

plasma-tutorial1.cpp

  1. include "plasma-tutorial1.h"
  2. include <QPainter>
  3. include <QFontMetrics>
  4. include <KIcon>

PlasmaTutorial1::PlasmaTutorial1(QObject *parent, const QStringList &args)

       : Plasma::Applet(parent, args)

{ }

PlasmaTutorial1::~PlasmaTutorial1() { }

QRectF PlasmaTutorial1::boundingRect() const {

       return QRectF(0,0,256,256);

}

void PlasmaTutorial1::paintInterface(QPainter *p, const QStyleOptionGraphicsItem *option, QWidget *widget) {

       KIcon icon("document");
       p->save();
       p->setPen(Qt::black);
       p->drawPixmap(0, 0, icon.pixmap(boundingRect().width()));
       p->drawText(boundingRect(),Qt::AlignCenter,"Hello Plasmoid!");
       p->restore();

}

  1. include "plasma-tutorial1.moc"