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

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

Published: 2015-11-22 / Last modified: 2015-11-22

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

簡単な自己紹介

今回は参加者が12人。大学生の方が1名、久しぶりに参加の方が数名いらっしゃいました。

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

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

Qt Advent Calendar 2015 の宣伝と協力のお願い

2014年大好評だった Qt Advent Calendar を今年もやることにしました。どなたでも、どんな内容でも大丈夫ですので、是非今年もみんなで楽しくクリスマスを迎えましょう!

OSC の報告

10月末に開催された OSC Tokyo 2015 Fall の簡単な報告をしました。

Qt World Summit 2015 の報告

10月5日から3日間、ドイツのベルリンで開催された Qt World Summit に参加された方からイベントの報告がありました。

セッションの動画もすでに公開されているので、興味のある方は是非ご覧ください。

Continue reading...

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日とかかかったりするので、とても親切になったと思います。