KHelloWorld

はじめに

KDEでつくるHelloWorldです。
khelloworld.hkhelloworld.cppmain.cppの3つのファイルから構成されます。

khelloworld.h

#ifndef KHELLOWORLD_H
#define KHELLOWORLD_H
・・・
#endif /* KHELLOWORLD_H */

この3行はヘッダーファイルのお決まりの形ですね。

#include <kmainwindow.h>
#include <qpushbutton.h>

KMainWindow,QPushButtonのヘッダーファイルを読み込みます。

class KHelloWorld : public KMainWindow{
public:
    KHelloWorld();
    ~KHelloWorld();
};

KHelloWorldクラスはKMainWindowクラスを継承して作られます。
コンストラクタとデストラクタを定義しておきます。

    QPushButton* button;

「Hello World」と表示するボタンです。

    Q_OBJECT
public slots:
    void slotLeave();

ボタンがクリックされたときに終了するためのスロットと、それを使うためにQ_OBJECTを書いておきます。

khelloworld.cpp

#include "khelloworld.h"

KHelloWorldのヘッダーファイルを読み込みます。

KHelloWorld::KHelloWorld()
{
    button = new QPushButton( "Hello World!", this );
    connect( button, SIGNAL( clicked() ), this, SLOT( slotLeave() ) );
    setCentralWidget( button );
    resize( 100, 40 );
}

コンストラクタです。
"Hello World!"というキャプションのボタンを作成し、 クリックシグナルをslotLeave()に接続し、 KMainWindowを継承したKHelloWorldクラスのメインウィジットにセットします。 適当な大きさにサイズを変更しておきます。

KHelloWorld::~KHelloWorld()
{
}

デストラクタです。
buttonなどはKDEが勝手にdeleteしてくれるので何もすることはありませんが、空で一応書いておきます。

void KHelloWorld::slotLeave()
{
    close();
}

buttonをクリックしたときに呼ばれるスロットで、KMainWindowを継承しているKHelloWorldを閉じます。

main.cpp

#include <kapplication.h>
#include <kaboutdata.h>
#include <klocale.h>
#include <kcmdlineargs.h>
#include "khelloworld.h"

static const char* description = I18N_NOOP("Hello World from KDE.");

static const char* version = "1.0";

int main( int argc, char* argv[] )
{
    KAboutData aboutData( "KHelloWorld", I18N_NOOP("KHelloWorld"), version, description,
                            KAboutData::License_LGPL, "(c)2003, Tasuku Suzuki" );
    aboutData.addAuthor( "Tasuku Suzuki", 0, "tasuku@linux-life.net );

    KCmdLineArgs::init( argc, argv, &aboutData );

    KApplication app;
    if( app.isRestored() ){
        RESTORE( KHelloWorld )
    }else{
        KHelloWorld* khelloworld = new KHelloWorld();
        khelloworld->show();
    }
    app.exec();
}

KDEアプリケーションのmain関数のひな型(らしい)です。

コンパイル

まず、khelloworldのmocファイルを作成します。

$ moc -o khelloworld.moc.cpp khelloworld.h

cppファイルをコンパイルします。

$ gcc -c *.cpp -I$KDEDIR/include -I$QTDIR/include

最後にオブジェクトファイルをリンクします。

$ gcc -o khelloworld *.o -L$KDEDIR/lib -L$QTDIR/lib -lqt -lkdecore -lkdeui

実行

$ ./khelloworld

KHelloWorld クリックすると終了するはずです。
また、KDEアプリケーションなので以下のようなオプションが使えます。

$ ./khelloworld --help
Usage: khelloworld [Qt-options] [KDE-options]

Hello World from KDE.

Generic options:
--help Show help about options
--help-qt Show Qt specific options
--help-kde Show KDE specific options
--help-all Show all options
--author Show author information
-v, --version Show version information
--license Show license information
-- End of options

スポンサード リンク

トラックバック

トラックバックURL
https://linux-life.net/tb/program/cc/kde/doc/khelloworld/
Linux Life 〜 No linux, No life 〜
プログラミング > C++ > KDE > KDEプログラミング入門 > KHelloWorld