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

関東Qt勉強会 #11

Published: 2012-12-30

2013年最初の関東Qt勉強会を開催します。

日時:2013/01/19 13:00-17:00 第3土曜日

場所:株式会社PTP会議室

内容:

  • 運営体制の変更について(仮)
  • 今後の関東Qt勉強会の方向性や進め方などについての話し合い
  • 発表とか

発表したい!という方は是非ここでお知らせください。

また、余った時間は、個々に(みんなで?)Qtでなにかを作る時間にしたいと思います。(できればQtの開発環境の入った)パソコンを持参してください。

参加は http://www.zusaar.com/event/482005 からお願いします。

Raspberry Pi が6台ほどあるので、Qt で遊んでみたい方は是非参加してください。

要望があった Qt のシールも配る予定です!

参照:関東Qt勉強会の Google グループ

QPA のお勉強(1)

Published: 2012-12-26 / Last modified: 2012-12-27

QPA とは?

Qt Platform Abstraction (通称 QPA) は Qt の GUI まわりのプラットフォームの抽象化レイヤーです。Qt 4.8 で導入され、Qt 5.0 で機能を追加しすべてのプラットフォームで使われるようになりました。

windows, cocoa, xcb, wayland, eglfs, qnx など、実際に使用されているプラグインの他、directfb, kms, linuxfb, openwfd のように試験的に実装されているプラグインもあります。

QPA の勉強を兼ねてなにか面白いプラグインを作りたいなと思ってきたのですが、なかなかいいアイデアも思い浮かばなかったので、今回は proxy プラグインを作ってみました。

Continue reading...

C++ のシンタックスハイライト対応

Published: 2012-12-26

300 行くらい JavaScript 書いて C++ も色がつくようになった。やる気++。

/* Copyright (c) 2012 QtHttpServer Project.
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the QtHttpServer nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL QTHTTPSERVER BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef QHTTPCONNECTION_H
#define QHTTPCONNECTION_H

#include <QtNetwork/QTcpSocket>

class QHttpRequest;
class QHttpReply;
class QWebSocket;

class QHttpConnection : public QTcpSocket
{
    Q_OBJECT
public:
#if QT_VERSION < 0x050000
    explicit QHttpConnection(int socketDescriptor, QObject *parent = 0);
#else
    explicit QHttpConnection(qintptr socketDescriptor, QObject *parent = 0);
#endif
    ~QHttpConnection();

    const QHttpRequest *requestFor(QHttpReply *reply);

signals:
    void ready(QHttpRequest *request, QHttpReply *reply);
    void ready(QWebSocket *socket);

private:
    class Private;
    Private *d;
};

#endif // QHTTPCONNECTION_H

Continue reading...

FolderListModel は内部でスレッドを使っている

Published: 2012-12-24 / Last modified: 2013-01-03

FolderListModel は Qt 4 の時代から実験的に使うことができる QtQuick のエレメントで、以下のように指定されたフォルダを走査してファイルの一覧を取ってくるのに使うことができる。

import QtQuick 2.0
import Qt.labs.folderlistmodel 1.0

ListView {
width: 200; height: 400

FolderListModel {
id: folderModel
nameFilters: ["*.qml"] }

Component {
id: fileDelegate
Text { text: fileName }
}

model: folderModel
delegate: fileDelegate
}

Continue reading...

qtconfig がない

Published: 2012-12-22 / Last modified: 2013-01-03

Qt 5.0.0 の Linux 向けのリリースパッケージには qtconfig が含まれていなかった。

Qt 5 のソース自体でも プロジェクト自体がコメントアウト されている。

qttools の履歴を検索してみたところ Make tools compile. という2011年1月11日のコミット以来無効になっているらしい。changes-5.0.0 にも特に記載はなかった。

Qt 4 のように ini ファイルでグローバルの設定を持つのはやめて、各 QPA プラグインで必要があれば対応するという方向になるのかな。

Qt Solutions も Gerrit に移動しました

Published: 2012-12-21

しばらく開発が止まっていた Qt Solutions ですが Gerrit 上で貢献をすることが可能になりました。

$ git clone ssh://codereview.qt-project.org/qt-solutions/qt-solutions.git
$ ls qt-solutions
qtbrowserplugin
qtjp2imageformat
qtlockedfile
qtpropertybrowser
qtscriptclassic
qtservice
qtsingleapplication
qtsoap
qtwinmigrate

Qt でブラウザのプラグインを作るためのプロジェクトや、同じアプリケーションの複数起動を抑止する方法など、面白そうなものがありますね。興味がある方は試してみて、開発に参加してみてはいかがでしょうか。

参照: [Development] Qt Solutions on Gerrit

Qt 5.0.0 を GUI 無しでビルドする方法

Published: 2012-12-21

このパッチ を当ててください。5.0.0 までに取り込まれる予定だったんだけどレビュアーさんの都合で後回しになってしまったみたい。

configure のオプションは

-opensource -confirm-license -prefix=インストールするパス -no-gui -make libs

で通るのは確認しています。それ以外のオプションの組み合わせは試していません。

多少オーバースペックな感は否めませんが、GUI 以外で Qt を使うのも悪くないと思います。

Qt 5.0 リリース!

Published: 2012-12-20

クロスプラットフォームのアプリケーション・UI 開発フレームワーク Qt の7年ぶりのメジャーアップデート Qt 5 が 2012年12月19日にリリースされました!

Digia 社のリリース記事

2011年の5月に Qt 5 の構想 を発表して以来、様々な理由によりリリースが延びてきました。開発期間が長かった分、今後数年に渡って第一線で大活躍できるような満足のいく出来栄えになっていると思います。

是非 ダウンロード をし、インストールをし、サンプルを動かしたり、アプリケーションを作ったりしてみてください。

Continue reading...