Qt 勉強会 #6 @Tokyo 開催しました

2013年12月21日(土曜日)に Qt 勉強会 #6 @Tokyo株式会社 PTP さんのミーティングルームで開催しました。

今回もいつも通りもくもくと各自好きなことをやるスタイルで行いました。

もくもく:qdbusviewer の改善

最近仕事で D-Bus を使うことが増えてきたので Qt に含まれている qdbusviewer というツールをよく使うのですが、このツールのログ出力ペインにクリア機能がなくて少し不便だったので、クリア機能をつけてみることにしました。

qdbusviewer.cpp を見ると、ログビューアは QTextBrowser というクラスを使用していました。その基底クラスである QTextEdit の contextMenuEvent のドキュメントにちょうど右クリックメニューに項目を追加するコードの例が載っていたので、それをそのまま採用して、add “Clear” to context menu of log viewer in qdbusviewer というパッチを作成しました。

パッチ的には 121 行も追加されたことになっていますが、80 行はライセンスヘッダですし QTextBrowser の派生クラスを作成するためだけのコードが少し多いだけで、実際の処理は以下のようにとてもシンプルです。

void LogViewer::contextMenuEvent(QContextMenuEvent *event)
{
    QMenu *menu = createStandardContextMenu();
    QAction *action = menu->addAction(tr("Clear"));
    connect(action, SIGNAL(triggered()), this, SLOT(clear()));
    menu->exec(event->globalPos());
    delete menu;
}

それからもう一つ、qdbusviewer を Ctrl+Q で終了させる「assign a shortcut key to the Quit action in qdbusviewer」というパッチも作成しました。

発表:Qt 5 の Mac 版をペンタブレット対応した際の話

数か月前に @seanchas_t さんが、Qt 5.2 の Mac 版でペンタブレットを動くようにしてくれました。今度 Qt 勉強会に参加してくれた際にその時の話を聞きたいなぁと思っていたので、お願いして発表してもらいました。詳細はご本人の「Qtにペンタブレット関連のパッチを送った」というブログ記事をご覧ください。

発表:Garnet ~ mruby bindings for QObject

今回はじめて Qt 勉強会に参加された h2so5 さんが開発されている Garnet というプロジェクトについて発表していただきました。

QObject の派生クラスを型として mruby に登録し、mruby 側からそのクラスをインスタンス化し使用するようにできるという仕組みで、Qt のアプリケーションを mruby スクリプトで拡張して使うようなケースを想定して作られたそうです。Qt の メタオブジェクトシステム をうまく利用した、とても面白い試みだなーと思いました。

その他

みんなで持ち寄ったドーナツやチョコやみかんなどを食べながら楽しく Qt の何かをするという感じで、初心者から仕事で Qt を使っている人までいる楽しい勉強会になったと思います。

Togetter のまとめ

おすすめ