Qt Blog

510
Posts

629
Comments

The blog is moving to a new host on Monday 2nd of September. The comments are disabled during the migration.

Python バインディングを書いてみよう

Published Sunday October 28th, 2018 | Comments Off on Python バインディングを書いてみよう
Posted in Qt for Python | Tags: ,

この記事は The Qt Blog の Write your own Python bindings を翻訳したものです。 執筆: Alexandru, 2018年05月31日 こんにちは。 前回の記事では Qt ライブラリの Python バインディングを生成する方法について簡単に紹介しました。 今回は、自分のプロジェクトでバインディングを作る方法をちら見せしたいと思います。 Qt for Python には Shiboken というバインディング生成ツールが含まれることになりました。 以下の説明を読んでいただくことで、簡単な C++ のライブラリから Python バインディングが生成する方法を理解することができるでしょう。みなさんがお持ちのカスタムライブラリも、この手法でバインディング化していただけたらいいなと思っています。 Qt 関連の様々なプロジェクト同様、Shiboken に対するコントリビューションも大歓迎です。みんなの幸せにつながる改善をお待ちしております。 ライブラリのサンプル 今回の記事では、あまり中身のない Universe と呼ばれるカスタムライブラリを使用します。このライブラリは Icecream と Truck という2つのクラスを提供します。 アイスクリームには様々な味があります。トラックは近所の子供たちにアイスクリームを配達するための乗り物です。とっても簡単ですね? このクラスを Python から使いたいわけです。例えば、新しい味のアイスクリームを発明したり、配達が問題なく完了したかを確認したいと思います。 というわけで、これから Icecream と Truck の Python バインディングを作って、自分の Python […]

Read More

Qt 5.9.7 をリリースしました

Published Wednesday October 24th, 2018 | Comments Off on Qt 5.9.7 をリリースしました
Posted in Qt | Tags: ,

この記事は The Qt Blog の Qt 5.9.7 Released を翻訳したものです。 執筆: Jani Heikkinen, 2018年10月23日 本日 Qt 5.9.7 をリリース致しました。パッチリリースである Qt 5.9.7 には新機能の追加はありませんが、重要なバグフィックスや改善がなされています。 Qt 5.9.6 以降、Qt 5.9.7 では およそ 60 のバグフィックス が為されています。全体では180の変更が行われました。重要は変更の詳細は、Qt 5.9.7 の Change File を参照してください。 Qt 5.9.7 はオンラインインストーラーに付属のメンテナンスツールを利用してアップデートが可能です。新規にインストールする際は、Qt Account ポータル もしくは qt.io のダウンロードページ より入手してください。オフラインパッケージも、商用版は Qt Account ポータル より、オープンソース版は qt.io のダウンロードページ より入手可能です。 以前の記事でお伝えした通り、Qt 5.9 ではパッチリリースを今後も継続する予定ですが、ペースは緩やかになります。

Read More

Qt 5.12 LTS ベータ版リリース

Published Wednesday October 10th, 2018 | Comments Off on Qt 5.12 LTS ベータ版リリース
Posted in Qt | Tags: , ,

この記事は The Qt Blog の Qt 5.12 LTS Beta Released を翻訳したものです。 執筆: Tuukka Turunen, 2018年10月05日 本日 Qt 5.12 LTS のベータ版をリリースいたしました。Qt 5.12 LTS は堅牢な製品開発のベースとして期待されるバージョンで、3年間のサポート期間中にいくつものパッチレベルのアップデートが行われる予定です。今後開発が始まるプロジェクトだけではなく、現在進行中のプロジェクトに関しても、まもなくリリースされる Qt 5.12 LTS へのアップデートを推奨します。オンラインインストーラー経由でのダウンロードにも対応しているため、今回の最初のベータ版を今すぐ試していただく事が可能です。 ここで紹介すべき事はたくさんありますが、まずは Qt 5.12 LTS のハイライトを紹介したいと思います。新機能の概要の一覧は Qt 5.12 の wiki ページ をご覧ください。また、様々な新機能を紹介するためのブログ記事や、ウェブセミナーも予定しています。 長期サポート(LTS) Qt 5.12 LTS は長期サポートのリリースとなります。今後3年間サポートが行われ、その後も延長サポートの購入が可能となります。LTS ということで、バグフィックスやパフォーマンスの改善、セキュリティホールの修正などを含むパッチリリースが今後継続的に行われます。現時点で新しいプロジェクトを立ち上げる際には Qt 5.12 LTS のプレリリース版をお使いいただくことも可能です。既存のプロジェクトについても、5.12 LTS の正式リリースが行われた際にはそちらへの移行を推奨します。 Qt 5.9 LTS は 2018年2月に […]

Read More

コルーチンと Qt で遊んでみた

Published Saturday September 22nd, 2018 | Comments Off on コルーチンと Qt で遊んでみた
Posted in Qt | Tags:

この記事は The Qt Blog の Playing with coroutines and Qt を翻訳したものです。 執筆: Jesús Fernández, 2018年05月29日 みなさん、こんにちは! 最近 C++ でのコルーチンの状況が気になって、いくつかの実装を調べていました。そして これ で実験することにしました。 これはシンプルで簡単に使え、Linux と Windows で動作します。 当面の目標は、シグナルが来るのを待ったり、QCoreApplication::processEvents を呼んだり、QEventLoop をスタック上に作るようなことをせずとも非同期で動くコードを探るということです。 最初のアプローチは、カスタムのイベントディスパッチャーの中の processEvent 関数をコルーチンに変換し、yield を使うことでした。いくつか失敗をして、この方法はやめることにしました。 次の取り組みは、スロットをコルーチンにすることでした。 QTimer::singleShot(0, std::bind(&coroutine::resume, coroutine::create([]() { … }); このラムダ関数の中で、CPU は yield まで処理を実行し、アプリケーションのイベントループに飛びます。 実際のコードはこんな感じです。 #include “coroutine.h” #include <QtCore> #include <QtWidgets> int main(int argc, char **argv) […]

Read More

Qt for Python: 舞台裏

Published Saturday September 22nd, 2018 | Comments Off on Qt for Python: 舞台裏
Posted in Qt for Python | Tags: , , ,

この記事は The Qt Blog の Qt for Python: under the hood を翻訳したものです。 執筆: Cristián, 2018年05月24日 本日は、「Qt for Python バインディング」の生成プロセスについて紹介したいと思います。 以下の図は The Qt Company が PySide2 モジュールを提供する際の一般的なプロセスを示しています。 PySide プロジェクトが 2009 年に立ち上がった際に当時のチームは Qt の C++ のヘッダファイルから Python のバインディングを生成するのに外部のツールを使用することを決断しました。 すべての Qt の C++ の機能に対応できるという条件は当然として、最終的なパッケージの大きさに強い感心がありました。 以前のものはテンプレートを多用していたため、別のものが必要になりました。 いくつかの選択肢を検討した結果、そのチームは自分たちで Shiboken と呼ばれるジェネレーターを書くことにしました。 Shiboken は(QtScriptGenerator という昔のプロジェクトを元に作られた)ApiExtractor というライブラリを使用し、Clang を用いて Qt のヘッダファイルをパースして Qt のクラスの情報を取得します。 このステップは […]

Read More

Qt 1.0 から 5.11 へのポーティングガイド

Published Thursday September 20th, 2018 | Comments Off on Qt 1.0 から 5.11 へのポーティングガイド
Posted in Qt | Tags: , ,

この記事は The Qt Blog の Porting guide from Qt 1.0 to 5.11 を翻訳したものです。 執筆: Paul Olav Tvete, 2018年05月24日 Qt 5.11 がリリースされました。Qt 1.0 で書かれたアプリケーションをアップグレードする絶好の機会です ;-)。…という冗談はさておき 、今回は我々が最初の公式リリース以降の長い年月の間、いかに Qt の互換性を保ちつづけたのかを見てみたいと思います。 Qt は、ソースコードとバイナリの 互換性をマイナーリリース間で保証 していて、これは真剣に取り組んでいることの一つです。Qt のバージョンが上がった際にいちいち、アプリケーションの修正(や再コンパイル)を必要としないように非常に気を遣っています。しかし、時には Qt の改善にともなう大きな変更が必要な場合もあります。その場合は、メジャーリリースとして行います。1996年の Qt 1.0 のリリース以来(22年も前ですね)、2.0、3.0、4.0(この時はとても大変でしたね)、5.0 と4度ソースコードの互換性を破りました。 もちろん、メジャーリリースで互換性を破る場合でも影響を最小限に留めるよう努めてはいますが、変更は積み重なります。ここで「Qt 1.0 のアプリケーションを 5.11 で動かすのはどのくらい大変なんだろう?」という疑問が浮かび上がります。 この回答として、Qt 1.0 で提供していたチュートリアルのサンプルを題材にして、Qt 5 でコンパイルできるようにすることにしました。Qt のアーカイブは 1.41 までしか遡れないため、4つもの異なるソースコード管理システムに保存された古代の歴史から発掘する必要がありました。少しだけ脱線しましたが、そのサンプルの名前は t14 というもので、チュートリアルの最後、14番目のコードになります。 それでは実際に、これをビルドして実行するために必要なステップを紹介したいと思います。

Read More

Qt for WebAssembly – サンプルをチェック!

Published Wednesday September 19th, 2018 | Comments Off on Qt for WebAssembly – サンプルをチェック!
Posted in Qt for WebAssembly | Tags:

この記事は The Qt Blog の Qt for WebAssembly – check out the examples! を翻訳したものです。 執筆: Eskil Abrahamsen Blomfeldt, 2018年05月22日 WebAssembly は主要なウェブブラウザでサポートされており、ウェブページ上のサンドボックスで実行可能なバイナリ形式で、ネイティブのマシンコードとほぼ同等のスピードで動作します。Qt for WebAssembly は、ダウンロードの手間や(wasm ファイルの提供以外の)特殊なサーバーの設定なしにウェブブラウザ上で Qt アプリケーションを実行可能にする技術です。 実際に見ていただけるよう、いくつかのデモをコンパイルいたしました。パフォーマンスを体感したい場合は Firefox をご利用ください。 以下にデモと解説を羅列します。 http://example.qt.io/qt-webassembly/opengl/hellowindow/hellowindow.html Qt のロゴを OpenGL を利用して描画しています。このサンプルでは、任意の OpenGL のコードが実際に動くという事がお分かりいただけます。 http://example.qt.io/qt-webassembly/SensorTagDemo/SensorTagDemo.html 産業オートメーションに向けた比較的規模の大きいデモです。元々は Qt の WebSockets を利用してデータを受け取るデモですが、データはダミーで、単に綺麗な見た目を表示しています。 http://example.qt.io/qt-webassembly/quickcontrols2/gallery/gallery.html Qt Quick Controls 2 が提供するコントロールのギャラリーです。このデモでは、Qt Quick と Qt Quick Controls […]

Read More

Qt for WebAssembly

Published Wednesday September 19th, 2018 | Comments Off on Qt for WebAssembly
Posted in Qt for WebAssembly | Tags:

この記事は The Qt Blog の Qt for WebAssembly を翻訳したものです。 執筆: Lorn Potter, 2018年05月22日 Qt Project が Qt for WebAssembly テクノロジープレビューのベータ版をリリースしたニュースをご覧いただけましたでしょうか。 ウェブサーバーで配信した Qt をウェブブラウザ上で動かすために Emscripten を利用してコンパイルをしています。複数のプラットフォーム向けにコンパイルとデプロイをする代わりに、WebAssembly をサポートするすべてのブラウザむけのウェブサーバー向けにコンパイルとデプロイをするという発想です。これから事業を始める方で、様々なプラットフォームを持つ複数の顧客と仕事をする方は、Qt for WebAssembly で Qt もしくは Qt Quick のアプリをコンパイルすることで、デプロイを一度で済ませることが可能になります。 Qt for WebAssembly のビルド手順は Qt for WebAssembly の wiki ページ をご覧ください。まず初めに、emsdk compiler のダウンロードとセットアップが必要です。手順自体は極めて一般的です。これをクロスコンパイラとして利用します。 開発/デバッグ gdb が無いためデバッグは少々困難ですが、ブラウザのデバッガコンソールと同様に出力文が存在します(std::cout や qDebug()、printf)。Firefox では、about:config の “devtools.hud.loglimit.console” […]

Read More

Qt 5.12 アルファ版のリリース

Published Tuesday September 18th, 2018 | Comments Off on Qt 5.12 アルファ版のリリース
Posted in Qt | Tags: , ,

この記事は The Qt Blog の Qt 5.12 Alpha Released を翻訳したものです。 執筆: Jani Heikkinen, 2018年09月18日 本日 Qt 5.12 のアルファ版をリリースいたしました。今回のアルファ版ではソースコードパッケージに加え、ビルド済みのバイナリも提供致します。 Qt 5.12 の新機能については こちらの wiki ページ をご覧ください。なお、この機能の一覧は現在も更新中で、最初のベータ版をリリースするまでは確定ではないことにご注意ください。 今回のアルファ版のリリースの直後よりベータ版のリリースに向けた作業を開始します。最初のベータ版は2、3週間後を予定しております。詳しいスケジュールは 5.12 の wiki ページ をご覧ください。 Qt 5.12 のアルファ版をぜひお試しください。ソースパッケージは Qt Account もしくは download.qt.io より、ビルド済みのバイナリは Qt Online Installer より入手可能です。 メーリングリストへの投稿や Jira へのバグ報告などを通して、様々なフィードバックをいただければと思っています。

Read More

QML コンパイラパイプラインの最適化

Published Tuesday September 18th, 2018 | Comments Off on QML コンパイラパイプラインの最適化
Posted in Qt | Tags: , , , , , ,

この記事は The Qt Blog の Optimizing the QML compiler pipeline を翻訳したものです。 執筆: Lars Knoll, 2018年05月22日 Qt QML は Qt Quick でユーザーインターフェースを構築する際のプログラミング言語である QML を実行するためのエンジンです。Qt QML 自体には描画機能に関する依存が一切ありません。このモジュールでは、QML 言語のサポートに加え、ECMAScript 5.1 に準拠した JavaScript のエンジンを提供しています。 Qt Quick というユーザーインターフェース技術の基礎を提供するこのモジュールは、Qt のユーザーに向けた核となるものです。内部的には主に2つの要素で構成されています。QML と ECMAScript をバイナリデータ構造とバイトコード/アセンブリにコンパイルするためのコンパイラパイプラインと、そこで生成されたコードを実行するためのランタイムです。今回の記事は前者についてのものになります。 5.10 まで利用していた Qt QML のコンパイラパイプラインはここ数年の Qt のアップデートでとても複雑になってしまいました。 以下の図は簡易化した以前のコンパイラパイプラインを示したものです。 まず QML と JavaScript のコードを 字句解析器(Lexer) と 構文解析器(Parser) に送り、抽象構文木(AST) というコンパイル用のコードに変換します。この […]

Read More
Get started today with Qt Download now