Folioscope

プログラミング/Unix系/デザイン/CG などのメモがもりもり

Qt Creatorの不思議実装

MacOS版のQt Creatorはver.2.6からフルスクリーンに対応しています.しかしQtのライブラリにはMac OSのフルスクリーンのためのAPIが用意されておらず,Cocoaのライブラリを叩く必要があります.ではQt Creatorではどのような実装になっているのでしょうか.

Qt Creatorのソースの$QTCREATOR/src/plugins/corepluginにメインウィンドウを始めとするコアのプラグインが入っています.このディレクトリのmainwindow.cppというファイルに次のような記述があります.

#if defined(Q_OS_MAC)
#include "macfullscreen.h"
#endif

これでMac OSでコンパイルする場合は,フルスクリーン用のヘッダを読みに行きます.

そしてmacfullscreen.hの実装はmacfullscreen.mmにあり,この中でCocoaのライブラリを呼び出しています.そう,macfullscreen.mmはObj-Cで実装されているのです.
記述されているのがC++でもObj-Cでもgccでコンパイルでき,それぞれの.cpp/.mmごとにバイナリが生成されます.そして最後にリンカがシームレスに処理してくれます.