クロスプラットフォームライブラリとAPI
Qt Creator IDEと生産性向上ツール
UI compositionのためのUIデザインツール
Qtプロジェクト向け
モバイルアプリのデジタル広告
受託開発、トレーニング、サポート等
組み込み向けユーセージ分析
Qtは、UIデザインやソフトウェア開発から品質保証、展開に至るまで、製品開発ライフサイクル全体で生産性を向上させます。あなたのニーズに最も適したソリューションを見つけてください。
最新のリソースを入手し、今後のイベントを確認しましょう。
理想的な学習リソースを見つけたり、コミュニティと交流したりして、Qtのスキルを向上させましょう。
初心者であろうとベテランのQtプロであろうと、成功するために必要なサポートと助けがすべて揃っています。
9月 22, 2018 by 鈴木 佑 | Comments
この記事は 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 のクラスの情報を取得します。
このステップは Qt に依存はしていないため、他の C++ のプロジェクトでも利用可能です。
さらに、Shiboken が持っている(XML 形式の) Typesystem を利用して、取得した情報を適切な表現に修正し、C++ のクラスを Python の世界で扱えるようにします。
この Typesystem ではクラスへのメソッドの追加や削除が可能で、各関数の引数の変更もできます。これは C++ と Python で競合が起こった際にデータ構造や型を適切に扱うために必要となる機能です。
この処理のアウトプットは CPython で書かれたラッパーのセットになり、これは簡単にコンパイルが可能で、それが最終的にみなさんのもとに PySide2 と呼ばれる Python のモジュールとして提供されています。
ApiExtractor と Shiboken の公式のドキュメントは Qt for Python のドキュメントに含む予定で、それを参考にしていただくことにより、Qt for Python 自体の開発に参加することも可能です。Shiboken の動作の詳細については別途記事を書く予定ですのでお楽しみに!
Download the latest release here: www.qt.io/download.
Qt 6.8 release focuses on technology trends like spatial computing & XR, complex data visualization in 2D & 3D, and ARM-based development for desktop.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
10 11, 2024
本稿は「Qt for Python release: 6.8 is out now!」の抄訳です。 Qt for Python..
10 4, 2024
本稿は「Running your Qt Design Studio projects with Python」の抄訳です。 Qt Design..
4 11, 2024
本記事は「Qt for Python release: 6.7 is now available!」の抄訳です。 Qt for..
Qt Group includes The Qt Company Oy and its global subsidiaries and affiliates.