QtCreator の特長
QtCreator には以下のような優れた特徴があります。
- 高性能なエディタ
- シンタックスハイライト機能
- 文脈依存のコード補完機能
- 入力中の静的コードチェック
- GUI のデザイン機能
- 高機能なナビゲーションツール
- ファイル、クラス、メソッド、ドキュメント等への高速なアクセス
- シンボルの追跡
- ビルド、実行、デバッグ機能
- ソースコード管理ツールに対応
- プラグイン形式による拡張が可能
- クロスプラットフォームで動作するため、どのプラットフォームでも同じ操作で開発ができる
- 軽快に動作
- シンタックスハイライト機能
QtCreator の使い方
QtCreatorを起動したら、メニューから「ファイル」⇒「New Project」を選択して、「非Qtプロジェクト」⇒「C++アプリケーション」を選択します。
名前をアルファベットと数字で入力し、「次へ」。ビルドシステム「CMake」のままで「次へ」。「キット」を選択して「次へ」。
「バージョン管理に追加」はお好みで「完了」。
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
上記のソースが自動作成されています。
Ctrl-Shift-B でビルド。
Ctrl-R で実行。
CMakeLists.txt を変更した後は、「ビルド」⇒「CMakeの実行」を選択してください。(但し、変更して保存すると自動的に実行されるようですが)
機能の説明のために、クラスのソースを追加します。
左側のツリーからプロジェクト名を展開して「Source Files」ノードを右クリックして、「新しいファイルを追加」を選択します。
「C/C++」から「C++クラス」を選択して「選択」をクリック。「クラス名」に「MyClass」と入力して(他はいじらず)「次へ」。
「バージョン管理に追加」はお好みで「完了」。ファイル名をクリップボードにコピーするかどうか聞かれるので「Yes」。
CMakeLists.txt が開かれるので:
add_executable(test02 main.cpp)
の部分に張り付けて
add_executable(test02 main.cpp myclass.h myclass.cpp)
のようにします。
MyClass の追加で以下のようなソースファイルが自動作成されます。
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass
{
public:
MyClass();
};
#endif // MYCLASS_H
#include "myclass.h"
MyClass::MyClass()
{
}
ここで、myclass.h にメソッドのプロトタイプを追加します。
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass
{
public:
MyClass();
int add2(int a, int b); // ← 追加した
};
#endif // MYCLASS_H
myclass.cpp に定義を追加したいので、myclass.h の add2 の上にカーソルを合わせて「Alt-ENTER」を押します。
コンテクストメニューから「myclass.cpp に定義を追加」を選択します。
すると、myclass.cpp が自動的に開かれて以下のように MyClass::add2() の定義(中身は空)が自動追加されます。(便利機能①)
#include "myclass.h"
MyClass::MyClass()
{
}
int MyClass::add2(int a, int b)
{
}
もう一度、ヘッダ(myclass.h)を見たい場合は「F4」を押せば、ソースとヘッダをいったりきたりできます。
また、「#include "myclass.h"」の myclass.h の上にカーソルを置いて「F2」を押すことによりヘッダを開くことができます。
これは自作のヘッダ以外にシステムヘッダも開くことができます。
(また、F2 は、関数名等にカーソルを合わせて、その定義に飛ぶためにも使えます)
今度は、myclass.cpp の add2 の上にカーソルを合わせて「Alt-ENTER」を押します。「定義を myclass.h へ移動する」を選択します。
そうすると、myclass.h に自動移動して、以下のようになります。(また、Alt-ENTER で .cpp に戻すこともできます)
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass
{
public:
MyClass();
int add2(int a, int b)
{
}
};
#endif // MYCLASS_H
こんどは、インターフェースクラスや、仮想関数を持った親クラスのメソッドをオーバーライドする手順を紹介します。
以下のように修正しました。親クラス(この場合はインターフェースクラス)を追加して、「class MyClass: public Animal」で継承を定義しました。
#ifndef MYCLASS_H
#define MYCLASS_H
// インターフェースクラス
struct Animal
{
virtual void say() = 0; // 純粋仮想関数
};
class MyClass: public Animal
{
public:
MyClass();
int add2(int a, int b);
};
#endif // MYCLASS_H
ここで、「class MyClass」の名前(MyClass)の部分にカーソルを合わせて「Alt-ENTER」を押します。
「基底クラスの仮想関数を追加する」を選択します。「追加する仮想関数」を選択して「OK」をクリックします。(便利機能②)
#ifndef MYCLASS_H
#define MYCLASS_H
// インターフェースクラス
struct Animal
{
virtual void say() = 0; // 純粋仮想関数
};
class MyClass: public Animal
{
public:
MyClass();
int add2(int a, int b);
// Animal interface
public:
void say();
};
#endif // MYCLASS_H
上記のようになります。
また、「追加する仮想関数」を選択するダイアログで:
- 「実装ファイルに定義を追加する」をコンボボックスから選んで
- 関数宣言に "virtual" を追加kする、をチェックして
- 関数宣言に "override" 修飾子を追加する、もチェックして
から「OK」をクリックすると・・・
#ifndef MYCLASS_H
#define MYCLASS_H
// インターフェースクラス
struct Animal
{
virtual void say() = 0; // 純粋仮想関数
};
class MyClass: public Animal
{
public:
MyClass();
int add2(int a, int b);
// Animal interface
public:
virtual void say() override;
};
#endif // MYCLASS_H
#include "myclass.h"
MyClass::MyClass()
{
}
int MyClass::add2(int a, int b)
{
}
void MyClass::say()
{
}
どうでしょうか、g++ と CMake があれば Qt SDK なしで、QtCreator が使えるので、これらの便利な機能を使ってみてください。
それでは!
以下の記事もよろしくお願いいたします。Qt Creator で開発したソースが Visual Studio で文字化けしてしまうのを解決します。