Qt Blog

495
Posts

629
Comments

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

Published Thursday September 20th, 2018 | Leave a comment
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 | Leave a comment
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 | Leave a comment
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 | Leave a comment
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 | Leave a comment
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

5.11 での QtKNX のアップデート

Published Tuesday September 18th, 2018 | Leave a comment
Posted in Qt for Automation | Tags: , ,

この記事は The Qt Blog の QtKNX updates for 5.11 を翻訳したものです。 執筆: Andrew O’Doherty, 2018年05月18日 以前 KNX の対応 についてお知らせをして以降しばらく間が空いてしまいましたが、5.11 のリリースに合わせてアップデートを行う QtKNX の内容を簡単に紹介したいと思います。 API の改善 今回のアップデートの焦点の一つは Qt KNX のオブジェクトの走査と構築をより直感的に改善することでした。KNXnet/IP フレームで必要となる数多くの仕様に対応するために、プロキシパターンを導入しました。例えば、KNXnet/IP の接続要求のフレームで実行される情報は QKnxNetIpConnectRequestProxy クラスを利用して得ることができます。

Read More

Qt の MQTT でデバイス間通信の最適化

Published Tuesday September 18th, 2018 | Leave a comment
Posted in Qt for Automation | Tags: ,

この記事は The Qt Blog の Optimizing Device Communication with Qt MQTT を翻訳したものです。 執筆: Maurice Kalinowski, 2018年05月16日 Qt for Automation は Qt for Application Development や Qt for Device Creation 向けのアドオンとして、Qt 5.10 に合わせてリリース致しました。これに含まれる Qt MQTT と呼ばれるモジュールが、クライアントサイドの MQTT のソリューションです。 Qt MQTT はクライアント用で、開発者が MQTT で送るデータを管理するセンサーデバイスやゲートウエイを開発する際に利用されます。MQTT はそれ自身が軽量で、オープンで、シンプルだとうたっています。プロトコル的にオーバーヘッドを限りなく減らすというのが基本的な思想です。もっとも採用されているバージョンは MQTT 3.1.1 で、これはよく MQTT 4 と呼ばれています。MQTT 5 は最近標準化がなされ、Qt MQTT でもその対応を進めています。これについては今年の後半に別途お知らせ致します。 このモジュールの機能の確認と、開発者への利用のガイドラインを作成するために、The Qt […]

Read More

バグレポートやフォーラム経由でのコードコントリビューションについて

Published Saturday September 8th, 2018 | Leave a comment
Posted in Qt Project | Tags: , ,

ソースコードのコントリビューションが、バグレポートやフォーラムといった Qt のシステムからも可能になりました。これまでは、Qt Project に対するすべてのコードのコントリビューションは Contribution License Agreement(CLA) にて管理されていて、商用ライセンスをお持ちの方には The Qt Company が Qt に対して行うバグフィックスや些細な変更が例外的に直接提供されていました。今回、Qt Account の利用規約 を更新し、Qt のシステム経由でのソースコードのコントリビューションが可能だということを明記いたしました。 コントリビューションのガイドライン のとおり、 Qt Project に対するソースコードのコントリビューションの一番の推奨方法は依然として CLA になります。しかし、CLA にサインしていないユーザーが(例えば、 Qt のバグを修正する)パッチを持っているということも時々あります。今後は、こういったものの提供がバグレポート や フォーラム といった Qt のシステムを経由することで可能になります。 こういった「カジュアルなコントリビューション」が行われた場合、The Qt Company が、そのソースコードをピックアップし、その修正を Qt に取り込むための必要な手続きを行うことになります。つまり、そういったコードがそのまま自動的に Qt に取り込まれるわけではなく、Qt のリポジトリのソースコードの質を保つための通常のコントリビューションのプロセスをちゃんと踏むことになります。 以前の Qt Account やその他の Qt のシステムの利用規約でも The Qt Comopany が登録ユーザーからのコンテンツを公開することに対する十分な権利を提供していました。しかし、そのバージョンでは、そこにソースコードも含まれるということが明記されていなかったため、それを今回明確化いたしました。そして、これを厳密に実施すべく、現時点以降に貢献されたソースコードのみを対象にいたします。ということで、以前に Qt のシステムにパッチを送られた方は、お手数ですが再度提供していただければと思います。 […]

Read More

Qt 5.11 の OPC UA 対応

Published Saturday September 8th, 2018 | Leave a comment
Posted in Qt for Automation | Tags: ,

この記事は The Qt Blog の OPC UA support in Qt 5.11 を翻訳したものです。 執筆: Frank Meerkötter, 2018年05月16日 OPC UA はインダストリー 4.0 の中心となる要素で IT と産業製品のシステムのシームレスなコミュニケーションを提供します。Qt の OPC UA 対応は簡単に使える OPC UA 用の Qt の API を提供することを目的に basysKom が 2015 年に開始したものです。2017 年には The Qt Company も協力し、テクノロジープレビューが完成しました。五月下旬にリリースされる Qt 5.11 で利用可能になる予定です。 Qt OPC UA の目標は、HMI やアプリケーション開発におけるクライアント側の実装を簡単にするというものです。テクノロジープレビュー版では OPC UA スタンダードのサブセットの実装を行いました。これにより、サーバーへ接続し、属性の読み書き、サーバー側のメソッドの実行、データの変更のモニタリングやノードの監視などが可能になりました。すべての機能は非同期な API […]

Read More

QML と Qt for Python の連携

Published Saturday September 8th, 2018 | Leave a comment
Posted in Qt for Python | Tags: , ,

この記事は The Qt Blog の QML and Qt for Python interaction を翻訳したものです。 執筆: Friedemann Kleint, 2018年05月14日 QtWidgets というデスクトップのアプリケーション向けの UI 技術に加え、Qt は QML という UI 技術も提供しています。 今回は、Qt for Python で QML をどう使うのかを、declarative/extending/chapter3-bindings を基に大まかに説明をしたいと思います。 まず初めに、.qml ファイルをロードするための基本的な型を見てみましょう。QGuiApplication と QQuickView のインスタンスを生成します。 QML のエレメントがビューのサイズに追従するよう、resizeMode プロパティに SizeRootObjectToView を設定します。 app = QGuiApplication(sys.argv) view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) その後、ビューの setSource メソッドを使用して QML のロードを行います。 QML […]

Read More
Get started today with Qt Download now