メタオブジェクトシステム

Qt 5 でのメタオブジェクトシステムの変更点

Published Tuesday July 3rd, 2012 | Leave a comment
Posted in Qt | Tags: , ,

この記事は Qt Blog の “Changes to the Meta-Object System in Qt 5” を翻訳したものです。 執筆: Kent Hansen, 2012年6月22日 Qt 5 では メタオブジェクトシステム に対する変更が行われました。内部的な変更だけではなく、API にも変更があります。Qt 4 とのソースコード互換性のない変更も行われました。この記事では、これらの変更の詳細とどのような対応が必要になるのかについて紹介したいと思います。また、QMetaMethod に新たに加えられた便利な API の紹介もあわせてしたいと思います。 Qt 4 でのメタオブジェクトのバージョンのサポートの削除 (moc によって生成される)メタオブジェクトにはデータの(形式や順番などの)内容やメタオブジェクトの機能を特定するためのバージョン番号が含まれています。Qt の(マイナー)リリースでメタオブジェクトに(クラスのコンストラクタを検索可能にするような)新機能を追加した際には、このメタオブジェクトのバージョンを上げる対応が必要になります。そして、Qt 4 での最終的なメタオブジェクトのバージョンは 6 でした。 Qt のマイナーリリースでは、後方互換性の維持のために古いのバージョンもメタオブジェクトもサポートしていました。内部のコードでは、それぞれのメタオブジェクトに対してバージョンをチェックし、それに応じた処理が行われていました。 Qt 5 は Qt 4 とのバイナリ互換性を保持しないため、メタオブジェクトの以前のバージョンのサポートを打ち切るちょうどいい機会になりました。Qt 5 では Qt 4 で対応してきた様々なバージョンのメタオブジェクトが生成されることはないので、それらのバージョンに対応するためのコードを削除しました。Qt 5 での現在のメタオブジェクトのバージョンは 7 になります。

Read More

Qt をはじめよう! 第11回: QObject の派生クラスを作成しよう

Published Wednesday July 7th, 2010 | 25 Comments on Qt をはじめよう! 第11回: QObject の派生クラスを作成しよう
Posted in Qt をはじめよう! | Tags: , ,

前回はシグナルとスロットと、その使い方について解説しました。”次回は独自のシグナルとスロットを作成してみましょう。”と書きましたが、その前に、シグナルとスロットの作成のために必要な QObject の派生クラスの作成について解説することにします。 QObject の派生クラスの作成 前回まで使用してきたサンプルに QObject の派生クラス Object を追加しましょう。 前回までに作成したプロジェクトを開いた状態で ファイル(F) -> ファイル/プロジェクトの新規作成(N)… を選択してください。 Qt Creator 2.0 では新規作成ダイアログがより使いやすくなりました。 「ファイルとクラス」の中から「C++」を選択し、右上のリストの「C++ クラス」を選択し、「選択(C)…」ボタンをクリックします。 C++ クラスウィザード クラス名: Object 基底クラス:QObject 型情報:QObject を継承 と設定し、「次へ(N)>」をクリックします。 object.h と object.cpp が作成され、プロジェクト example.pro に追加されます。 「完了(F)」 をクリックし、ウィザードを終了してください。

Read More
Get started today with Qt Download now