今まではクラスを定義することは無かったが、Qtの様々な機能を
有効に利用するためにはクラス定義が不可欠である。
ここでのクラスはC++言語でのものであり、今後、シグナルやスロットを
発生させるときに、クラス定義によりメンバ変数などの保護や隠蔽を
行うためのものである。
前回までのプログラムにクラスを導入する。
ただし、結果は第1章と変わらない。
サンプルの3という名前のフォルダの中に、以下の内容のファイルがある。
後の事を考えて、クラス定義、実装、メイン関数をそれぞれ、 別ファイルとして用意した。
#ifndef MAINWINDOW_H #define MAINWINDOW_H -中略- #endif //MAINWINDOW_H
この記述は、二重にクラスが定義される事を防ぐためにある。
ヘッダファイルを格上での定石として知って置いてほしい。
#include<qwidget.h> class MainWindow : public QWidget{ public: MainWindow(QWidget* parent, const char *name); };
ここでは、メインとなるウィンドウを定義するwindow classを定義している。
ウィンドウなので、QWidgetを継承している。
また、コンストラクタのみ宣言した。
クラス定義の記述法は次の通りである。
class クラス名 : アクセス指定子 :継承するクラス名
#include"mainwindow.h" MainWindow::MainWindow(QWidget* parent, const char* name) :QWidget(parent, name){ }
定義したmainwindowクラスを実装するために、mainwindow.hをincludeした。
コンストラクタのみ定義したので、コンストラクタを実装したが、
ウィンドウを表示するだけなので、親クラスのQWidgetを実装しているので、
特に記述すべきことはない。
今後、{ }内に処理を記述することになる。
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ファイルを作り直す必要がある。
実行結果は前回と変わらない。