PAGER : トップ /クラス定義

クラス定義

今まではクラスを定義することは無かったが、Qtの様々な機能を 有効に利用するためにはクラス定義が不可欠である。
ここでのクラスはC++言語でのものであり、今後、シグナルやスロットを 発生させるときに、クラス定義によりメンバ変数などの保護や隠蔽を 行うためのものである。
前回までのプログラムにクラスを導入する。 ただし、結果は第1章と変わらない。

ソース

サンプルの3という名前のフォルダの中に、以下の内容のファイルがある。

後の事を考えて、クラス定義、実装、メイン関数をそれぞれ、 別ファイルとして用意した。

mainwindow.h
MainWindowクラスの定義である。
mainWindow.cpp
MainWindowクラスの実装である。
main.cpp
main関数である。

解説

二重定義を防ぐ(mainwindow.h)

#ifndef MAINWINDOW_H #define MAINWINDOW_H -中略- #endif //MAINWINDOW_H

この記述は、二重にクラスが定義される事を防ぐためにある。
ヘッダファイルを格上での定石として知って置いてほしい。

クラス定義(mainwindow.h)

#include<qwidget.h> class MainWindow : public QWidget{ public: MainWindow(QWidget* parent, const char *name); };

ここでは、メインとなるウィンドウを定義するwindow classを定義している。
ウィンドウなので、QWidgetを継承している。
また、コンストラクタのみ宣言した。
クラス定義の記述法は次の通りである。

class クラス名 : アクセス指定子 :継承するクラス名

実装(mainwindow.cpp)

#include"mainwindow.h" MainWindow::MainWindow(QWidget* parent, const char* name) :QWidget(parent, name){ }

定義したmainwindowクラスを実装するために、mainwindow.hをincludeした。
コンストラクタのみ定義したので、コンストラクタを実装したが、 ウィンドウを表示するだけなので、親クラスのQWidgetを実装しているので、 特に記述すべきことはない。
今後、{ }内に処理を記述することになる。

main関数

int main(int argc, char* argv[]){ QApplication a(argc, argv); MainWindow mainwindow(0,"main"); a.setMainWidget(&mainwindow); mainwindow.show(); return a.exec(); }

新しくMainWindowクラスを定義したので、main関数の中で、 MainWindowオブジェクトを作らねばならない。

コンパイル

.proファイルには、プログラムに必要なファイルへのパスが かかれているので、ファイルを追加した場合、.proを作り直さねばならない。 前回から続けて、ファイルを追加した場合、 .proファイルを作り直す必要がある

結果

実行結果
実行結果は前回と変わらない。

PAGER : トップ /メニューバーの追加