Qt 5 の未来は明るいブログ

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

Published: 2015-10-20 / Last modified: 2015-10-20

2015年10月17日(土曜日)に Qt 勉強会 #28 @Tokyo株式会社 PTP のミーティングルームで開催しました。

簡単な自己紹介

今回は参加者が13人。初めて参加された方が4名、大学生の方が1名いらっしゃいました。

おやつを食べながらもくもくタイム

自己紹介の後は自由時間ということで、各自自分のやりたいことを進めながら、質問があったり困ってることがあったりしたらみんなで相談にのるような形で進めていきました。

OSC の準備

一週間後に開催される OSC Tokyo 2015 Fall のブース当番などを決めました。

Continue reading...

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

Published: 2015-09-21 / Last modified: 2015-09-21

2015年9月19日(土曜日)に Qt 勉強会 #27 @Tokyo株式会社 PTP のミーティングルームで開催しました。

簡単な自己紹介

今回は参加者が9人。初めて参加された方が2名、大学生の方が1名いらっしゃいました。

Qt の日飲み会の報告

9/10(キュートの日)に開催した 2015年 Qt の日飲み会 の簡単な報告をしました。

OSC 参加の告知

10月末に開催される オープンソースカンファレンス Tokyo/Fall への出展に際して、ブース展示に協力してもらうよう宣伝をしました。詳細は後日シェアされる予定です。

おやつを食べながらもくもくタイム

自己紹介の後は自由時間ということで、各自自分のやりたいことを進めながら、質問があったり困ってることがあったりしたらみんなで相談にのるような形で進めていきました。

Continue reading...

Qt Creator で作成した「Qt Quick Application」のコンパイルが通らない問題を修正しました

Published: 2015-09-05 / Last modified: 2015-09-05

というバグを 前回の Qt 勉強会 の時に修正し、無事マージされました。

問題点

Qt Creator で「Qt Quick Application」を作成する際に生成されるアプリケーションのテンプレートのビルドが通らないという問題で、設定の「Use Qt module name in #include-directive」というオプションが有効の場合に再現します。このオプションはデフォルトでは無効なので誰も困っていなかったという話もあります。

修正

#include <QtGui/QGuiApplication> であるべきものが、#include <QGui/QGuiApplication> となってしまっていたので、そういう場所を一通り修正して QtQuickWizards: Fix compilation というパッチを送り、無事マージされました。今後リリースされる 3.5.x では修正されている予定です。

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

Published: 2015-08-24 / Last modified: 2015-08-24

2015年8月22日(土曜日)に Qt 勉強会 #26 @Tokyo株式会社 PTP のミーティングルームで開催しました。

簡単な自己紹介

今回は参加者が16人。初めて参加された方が2名、高校生の方が1名いらっしゃいました。

2Dグラフィックスのしくみ」という本を書きました

Windows/Mac 両対応のペイントツール FireAlpaca の開発チームの方から、本の紹介がありました。

執筆の経緯や実際の進め方など興味深い話も聞けてとてもおもしろかったです。

インストーラーを作ろう!」の代理?販売

先月代理購入を申し込んだ方に 夏コミ(C88)新刊情報「インストーラを作ろう!」 の受け渡しが行われました。C88 にちなんで88ページも書いたということで、なかなかのボリュームになっています。

おやつを食べながらもくもくタイム

自己紹介の後は自由時間ということで、各自自分のやりたいことを進めながら、質問があったり困ってることがあったりしたらみんなで相談にのるような形で進めていきました。

キュートの日企画

五年くらい前から9月10日を「キュートの日」にしよう!と言ってなにかをしようしようと思っていましたが、今年はちゃんと飲み会を企画しました。「2015年 Qt の日飲み会」詳細はなにも決まっていませんが、新宿あたりで適当に飲む予定です。Qt に興味がある人、普段使っている人、みなさん大歓迎ですので、気軽にご参加ください。また、当日の運営スタッフや企画なども募集していますので、興味やアイディアがある人はお知らせください。

OSC への参加について

2015年10月24日(土)から2日間、明星大学 にて開催される オープンソースカンファレンス Tokyo/Fall の参加についての話し合いをしました。

日本Qtユーザー会として 2013 Tokyo/Fall 以来継続的に参加をしていて、今回もブースを出す予定です。Qt に興味がある方は是非お立ち寄りください。

Continue reading...

Qt が syslog に対応しました

Published: 2015-08-12

今年の秋にリリースされる Qt 5.6 から QDebug を使用したデバッグなどのログを syslog に直接出力できるようになりました。

経緯

2014年の1月に Support logging direct to journald, if enabled. というパッチがマージされ、Qt 5.3 から systemd の journald に直接ログを出力できるようになりました。

メジャーな Linux のディストリビューションはどんどん systemd 化してきていますが、syslog もまだ現役なので対応してみました。

Continue reading...

Qt で標準入力(stdin)からデータを読み取る方法

Published: 2015-08-01 / Last modified: 2015-08-01

別に難しくなかったんですが、なんかハマったのでメモメモ。

単純な方法

QTextStream を使って以下のように処理をする事が可能です。


#include <QtCore/QDebug>
#include <QtCore/QTextStream>

int main(int argc, char **argv)
{
    QTextStream qstdin(stdin);
    while(!qstdin.atEnd()) {
           QString line = qstdin.readLine();
        if (line.isEmpty()) {
            break;
        } else {
            qDebug() << line;
        }   
    }   
    return 0;
}

Continue reading...

Qt 5.5.0 で qDebug() << QString の出力がエスケープされるようになった件のまとめ

Published: 2015-08-01

はじめに

2015年7月27日に Qt の開発者用のメーリングリストに「Backwards compatibiltiy break in Qt 5.5」という投稿がありました。

内容は、 Qt 5.5.0 で qDebug() << QString の 挙動が変わり、しかも 不便になった ので、ロシアの Qt コミュニティはとても困っていて、[QTBUG-47316] QDebug should not escape printable non-US-ASCII characters というバグレポを書いてやりとりをしていたけれど、担当者では話にならないから「もっと偉い人と話がしたい」という少々過激なものでした。

挙動の変更

Qt 5.4 までは

qDebug() << QString::fromUtf8("Qt めっちゃキュート");

を実行すると

"Qt めっちゃキュート"

とデバッグログが出力されていました。

Qt 5.5.0 では以下のようにUS- ASCII 以外の文字については Unicode のコードポイントが表示されるようになっています。

"Qt \u3081\u3063\u3061\u3083\u30AD\u30E5\u30FC\u30C8"

Continue reading...

関数渡しの qmlRegisterSingletonType() で QObject * 型の返り値が nullptr の際のクラッシュを改善しました

Published: 2015-07-24 / Last modified: 2015-07-24

Qt Quick の Singleton 型を C++ から登録するには、QJSValue を返す関数を登録するもの と、QObject * を返す関数を登録するものQUrl と名前を指定するもの の3通りの方法があります。

このうち2番目の方法で登録する際に、設定した関数が(誤って)nullptr を返してしまうと Qt Quick のエンジンの内部でわけのわからないエラーになって落ちる問題を改善しました。

変更は add null check for qmlRegisterSingletonType() で、nullptr の場合に、「qmlRegisterSingletonType() に渡したコールバック関数が null pointer を返したから○○型はシングルトンとして扱えないよ」というエラーメッセージを出してアプリケーションを強制終了するというものです。

落ちるのは一緒ですが、原因をとてもわかりやすく表示して落ちるのでだいぶ改善されたと思います。

警告にとどめて動作は継続するというパターンも書いたのですが(パッチセット1)意図した動作ではない以上、無理やり動かしたところであまり意味がないので強制終了をするようにしました。

こんなマヌケな?バグを踏む人は年に一人いるかいないかのような気もしますが、うっかりこんな状況に陥って Qt の中の奥深くでクラッシュすると、内部にあまり馴染みのない人であれば問題を特定するのに1日とか2日とかかかったりするので、とても親切になったと思います。

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

Published: 2015-07-19 / Last modified: 2015-07-20

2015年7月18日(土曜日)に Qt 勉強会 #25 @Tokyo株式会社 PTP のミーティングルームで開催しました。

簡単な自己紹介

今回は参加者が13人(+懇親会から1人)。初めて参加された方が4名いらっしゃいました。

3D 系の人が多かったのと、「会社として Qt の採用を検討している」という人が数名いらっしゃいました。

「インストーラーを作ろう!」の宣伝

夏コミ(C88)新刊情報「インストーラを作ろう!」 の告知と、希望者の分の代理購入の受付をしました。

おやつを食べながらもくもくタイム

自己紹介の後は自由時間ということで、各自自分のやりたいことを進めながら、質問があったり困ってることがあったりしたらみんなで相談にのるような形で進めていきました。

成果発表

コラージュ療法用のアプリの開発を進めていました

今回は Qt Quick の Canvas の save() を使用して保存した画像ファイルを QPrinter で PDF に出力するとネガポジ反転してしまう問題と格闘していました。再現用のサンプルを作成して、他の人の環境で試してもらった結果、Windows 以外の環境や、別の Windows の環境では再現しなかったため、環境まわりを中心に今後は調べていきます。

Qt 製のアプリケーションの拡張をしていました

点群 のビューアーに、ファイルをロードする機能をつけてとても便利になりました。

Qt Quick のアニメーションの勉強をしていました

前回に引き続き、Qt Quick の本を読みながらアニメーションの項目を進めていました。

Qt Quick と C++ の連携を試していました

仕事で使う上で色々確認したい項目があるということで、QObject のサブクラスを QML 側で操作したり、バインディングが動くことを確認してみました。

D-Bus と格闘していました

ソケット通信と D-Bus 通信のブリッジアプリを作っていて、Qt の サンプル を動かそうと四苦八苦していました。

自作ソフトの開発を進めていました

内部ウィジェット的なものをプラグイン形式で拡張できるような仕組みを作って、ウィジェットのプラグイン化を進めていました。

Box2D の QML バインディングで遊んでいました

qml-box2d これですね。おもしろいゲームを作るらしいです。

Qt 製のアプリケーションのビルドにてこずっていました

スウェーデンのテレビ局が開発した、CasparCG のクライアントを Windows でビルドしようとしてうまくいきませんでした。ソースツリーに入っている Windows 用の dll とのリンクに失敗していたので、コンパイラの不整合かなにかが怪しいことがわかりました。

ノードエディタを開発していました

GraphicsView 上に SVG を表示させてかっこいいノードエディタを作っていました。が、Graphics View はコツをつかむのが難しい感じでした。

3D のライティングの勉強と改善をしていました

立方体の角がつぶれてしまわないように、色々試して頑張って改善しました。

OpenCV と Qt を連携させたアプリケーションの開発

OpenCV で AVI を再生させて、描画を QOpenGLWidget に描画するようなものを作っていました。まだ怪しいところはありますが、動くようになりました。

Android 用の開発環境を作ってみました

Qt 以外に、SDK/NDK 、ant などを用意するのがめんどくさかったとのことでした。

Qt Creator の「プロジェクト」画面の改善をしてました

こんな感じでサイドバー化してみました。それなりに完璧になったらパッチを送って ML で提案してみようと思います。

懇親会

4人で懇親会をはじめて、1人途中参加がありました。

2次会

エイトビットカフェ という妙なバーで遊んでから帰りました。

まとめ

今回も様々な人が参加してくれて、とてもおもしろかったです。

Continue reading...