KHelloWorld
はじめに
KDEでつくるHelloWorldです。
khelloworld.h、khelloworld.cpp、main.cppの3つのファイルから構成されます。
khelloworld.h
#define KHELLOWORLD_H
・・・
#endif /* KHELLOWORLD_H */
この3行はヘッダーファイルのお決まりの形ですね。
KMainWindow,QPushButtonのヘッダーファイルを読み込みます。
KHelloWorldクラスはKMainWindowクラスを継承して作られます。
コンストラクタとデストラクタを定義しておきます。
「Hello World」と表示するボタンです。
ボタンがクリックされたときに終了するためのスロットと、それを使うためにQ_OBJECTを書いておきます。
khelloworld.cpp
KHelloWorldのヘッダーファイルを読み込みます。
{
button = new QPushButton( "Hello World!", this );
connect( button, SIGNAL( clicked() ), this, SLOT( slotLeave() ) );
setCentralWidget( button );
resize( 100, 40 );
}
コンストラクタです。
"Hello World!"というキャプションのボタンを作成し、
クリックシグナルをslotLeave()に接続し、
KMainWindowを継承したKHelloWorldクラスのメインウィジットにセットします。
適当な大きさにサイズを変更しておきます。
デストラクタです。
buttonなどはKDEが勝手にdeleteしてくれるので何もすることはありませんが、空で一応書いておきます。
buttonをクリックしたときに呼ばれるスロットで、KMainWindowを継承しているKHelloWorldを閉じます。
main.cpp
#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ファイルを作成します。
cppファイルをコンパイルします。
最後にオブジェクトファイルをリンクします。
実行
クリックすると終了するはずです。
また、KDEアプリケーションなので以下のようなオプションが使えます。
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 |