QtQuick でコマンドライン引数を定義し扱う

こんな要望を受けて、自分で作ってみました

$ git clone git://git.qt-users.jp/codereview/qmlplugins/commandlineoptions.git
$ cd commandlineoptions
$ qmake
$ make
$ (sudo) make install
import me.qtquick.CommandLineOptions 1.0

Rectangle {
    width: 300
    height: 100

    CommandLineOptions {
        id: cmo
        property bool boolOption
        property string stringOption: "default"
        property string string_option: "default"
        default property var options
    }
}

こんな風に QML に書くと、qmlscene などに渡されたコマンドライン引数を自動で解析して値が入ります。

default がついたプロパティがある場合には、オプション形式以外の引数がそこに文字列の配列で入ります。

内部的な処理は、CommandLineOptions エレメントが生成された時点で定義されたプロパティを取得し、コマンドライン引数を扱う方法 の仕組みを使って引数を解析してプロパティに設定しています。実装に興味のある方は CommandLineOptions::componentComplete() を参照してください。

これでまた一つ Qt/C++ 書かなくてよくなりました!

おすすめ