「Qt」の版間の差分
(Qt Creator) |
(MacのBackspace) |
||
107行目: | 107行目: | ||
出典: [https://doc.qt.io/qtcreator/creator-writing-program.html Creating a Qt Widget Based Application | Qt Creator Manual]。 | 出典: [https://doc.qt.io/qtcreator/creator-writing-program.html Creating a Qt Widget Based Application | Qt Creator Manual]。 | ||
== Qt Widgets == | ===Other=== | ||
====MacのBackspace==== | |||
出典: [https://bugreports.qt.io/browse/QTCREATORBUG-26764 <nowiki>[QTCREATORBUG-26764] Backspace is not working in Mac Qt Creator 6.0.1 - Qt Bug Tracker</nowiki>]。 | |||
MacのQt Createorだと、Google日本語入力のIMEだとBackspaceやDeleteキーがうまく動作しない模様。 | |||
しかたないので、開発作業中だけデフォルトIMEのKotoeriを使う。 | |||
==Qt Widgets== | |||
出典: [https://doc.qt.io/qt-6/qtwidgets-index.html Qt Widgets 6.6.1]。 | 出典: [https://doc.qt.io/qt-6/qtwidgets-index.html Qt Widgets 6.6.1]。 | ||
Qtの原点。昔ながらのC++デスクトップアプリ用のモジュール。古くから存在していて、一番安定している。C++のフル機能を利用できる。Qt Quickも悪くはないが、こちらはモバイルファースト。C++技術者ならC++の勉強のためにもQt Widgetsを使うのがいい。Qt QuickはC++をあまり使わなくて、C++の知識の流用・学習が利かない。 | Qtの原点。昔ながらのC++デスクトップアプリ用のモジュール。古くから存在していて、一番安定している。C++のフル機能を利用できる。Qt Quickも悪くはないが、こちらはモバイルファースト。C++技術者ならC++の勉強のためにもQt Widgetsを使うのがいい。Qt QuickはC++をあまり使わなくて、C++の知識の流用・学習が利かない。 | ||
=== main.cpp === | ===main.cpp=== | ||
出典: [https://doc.qt.io/qt-6/widgets-tutorial.html Widgets Tutorial | Qt Widgets 6.6.1]。 | 出典: [https://doc.qt.io/qt-6/widgets-tutorial.html Widgets Tutorial | Qt Widgets 6.6.1]。 | ||
134行目: | 143行目: | ||
QApplicationでインスタンスを生成したら、それ以後にQObject派生クラスを生成したりすると、内部的に連携しているこれでアプリを作っていく感じになる。 | QApplicationでインスタンスを生成したら、それ以後にQObject派生クラスを生成したりすると、内部的に連携しているこれでアプリを作っていく感じになる。 | ||
=== Getting Started Programming with Qt Widgets === | ===Getting Started Programming with Qt Widgets=== | ||
出典: [https://doc.qt.io/qt-6/qtwidgets-tutorials-notepad-example.html Getting Started Programming with Qt Widgets | Qt Widgets 6.6.1]。 | 出典: [https://doc.qt.io/qt-6/qtwidgets-tutorials-notepad-example.html Getting Started Programming with Qt Widgets | Qt Widgets 6.6.1]。 | ||
このチュートリアルが良くできている。この中身を理解できれば、それで基本的なアプリを作れると思う。 | このチュートリアルが良くできている。この中身を理解できれば、それで基本的なアプリを作れると思う。 | ||
== Qt Designer == | ==Qt Designer== | ||
出典: [https://doc.qt.io/qt-6/qtdesigner-manual.html Qt Designer Manual]。 | 出典: [https://doc.qt.io/qt-6/qtdesigner-manual.html Qt Designer Manual]。 | ||
148行目: | 157行目: | ||
元々は専用のアプリだったが、今はQt Creatorに組み込まれている。 | 元々は専用のアプリだったが、今はQt Creatorに組み込まれている。 | ||
== HTTP == | ==HTTP== | ||
情報源: | 情報源: | ||
* [https://taro3.github.io/Qt/MasteringQt5/14/Sending_and_receiving_HTTP_data.html HTTPデータの送受信 | taro3.github.io] | *[https://taro3.github.io/Qt/MasteringQt5/14/Sending_and_receiving_HTTP_data.html HTTPデータの送受信 | taro3.github.io] | ||
* [https://stackoverflow.com/questions/46943134/how-do-i-write-a-qt-http-get-request c++ - How do I write a Qt HTTP GET request? - Stack Overflow] | *[https://stackoverflow.com/questions/46943134/how-do-i-write-a-qt-http-get-request c++ - How do I write a Qt HTTP GET request? - Stack Overflow] | ||
* [https://doc.qt.io/qt-6/qtnetwork-http-example.html HTTP Client | Qt Network 6.6.1] | *[https://doc.qt.io/qt-6/qtnetwork-http-example.html HTTP Client | Qt Network 6.6.1] | ||
HTTPサーバーへのリクエストは頻出処理。curlで自分で実装してもいいが、Qtで専用のクラス類が用意されているので使うといい。 | HTTPサーバーへのリクエストは頻出処理。curlで自分で実装してもいいが、Qtで専用のクラス類が用意されているので使うといい。 | ||
159行目: | 168行目: | ||
具体的には以下の3クラスにお世話になる。 | 具体的には以下の3クラスにお世話になる。 | ||
* QNetworkAccessManager: このクラスは、アプリケーションが要求を送信し、応答を受信することを可能にします。 | *QNetworkAccessManager: このクラスは、アプリケーションが要求を送信し、応答を受信することを可能にします。 | ||
* QNetworkRequest: このクラスは、送信するリクエストをすべての情報(ヘッダ、URL、データなど)と一緒に保持します。 | *QNetworkRequest: このクラスは、送信するリクエストをすべての情報(ヘッダ、URL、データなど)と一緒に保持します。 | ||
* QNetworkReply: このクラスは、ヘッダーとデータを持つQNetworkRequestクラスの結果を含みます。 | *QNetworkReply: このクラスは、ヘッダーとデータを持つQNetworkRequestクラスの結果を含みます。 |
2024年1月1日 (月) 11:54時点における版
About
参考になる情報源がいくつかある。
- GitHub - PacktPublishing/Mastering-Qt-5: Code repository for Mastering Qt 5 published by Packt
- Mastering Qt5に沿って勉強するページ | taro3.github.io
Mastering Qt5という本があり、それを翻訳している人がいる。
License
情報源:
- Qt - Obligations of the GPL and LGPL
- Open Source Development | Open Source License | Qt
- Qt ライセンスについて #Qt - Qiita
- ios - Does App Store accept Qt app linked with QT Library LGPLv3 - Stack Overflow
Qtには3種類のライセンス形態がある。
- 商用: 有償。不自由ソフトの開発用。
- GPLv3: 自由ソフト用。
- LGPLv3: 無償で不自由ソフトの開発に使用可能。ただし、ユーザーにQt部分のライブラリーを置換可能な手順・プロジェクトファイル群の提供が必要で、使用可能なモジュールの制限が多い。Stack Overflowや公式サイト (Open Source Development | Open Source License | Qt) 説明がわかりやすい。
LGPLv3の義務は以下。
Business
OSSライセンスで開発後、商用ライセンスに移行する場合、不可能ではないが条件がある。
まず、Qtの営業に連絡する。商用ライセンスのモジュールは不自由ソフトなので、そこを維持するために、OSS部分を移行する必要があり、以降の支援の業務契約がおそらく必要。そうとう金額がかかるだろう。
Module
ライセンス形態ごとに使用可能なモジュールが変わる (Qt Features, Framework Essentials, Modules, Tools & Add-Ons)。これが個人的には大きい。
2023-12-13 Wed。
GPLv3で使用不能モジュール
- Development Tools
- Qt Quick Compiler Extensions
- Qt Quick Ultralight Compiler
- Qt Quick Ultralight Project Exporter
- Framework Add-Ons
- Qt Digital Advertising
- Active Qt
- Qt WebEngine
- Qt Safe Renderer
- Qt Quick Ultralite Controls
- Qt Quick Ultralite
- Non-automotive MCU Deployment Platforms
- Automotive MCU Deployment Platforms
- Qt Design Studio Bridge
- Qt for Android Automotive OS Car Service API
- Simulink support for Qt Design Studio
- Boot to Qt
- Qt for Python commercial add-ons
LGPLv3で使用不能なもの
- GPLv3で使用不能なもの
- Framework Add-Ons
- Qt Wayland Compositor
- Qt Charts
- Qt Data Visualization
- Qt Network Authorization
- Qt Virtual Keyboard
- Qt Safe Renderer
- In-Vehicle Infotainment Reference UI
- Qt Application Manager
- Qt Device Utilities
- Qt MQTT
- Qt CoAP
- Qt Design Studio Bridge
- Qt Quick Calendar
- Qt Quick TreeView n
- Qt Quick Timeline
- Qt Lottie Animation
- Qt Quick 3D
- Qt HTTP Server
- Qt Quick 3D Physics
- Qt gRPC
- Qt Protobuf
使用不能なモジュールを見る限り、別にLGPLv3でも通常利用には問題ないように感じる。どうせ元々使いたいものはGPLv3でも使用不能だし。
Platform
iOS
出典: Qt for iOS | Qt 6.6。
Xcodeが必須。それ以外はソースコードに手を付けなくてもビルドはできる。
Qt Creator
出典: Qt Creator Manual。
Qtの標準IDE。Qtの開発で非常に重要。
Tutorial
出典: Creating a Qt Widget Based Application | Qt Creator Manual。
Other
MacのBackspace
出典: [QTCREATORBUG-26764] Backspace is not working in Mac Qt Creator 6.0.1 - Qt Bug Tracker。
MacのQt Createorだと、Google日本語入力のIMEだとBackspaceやDeleteキーがうまく動作しない模様。
しかたないので、開発作業中だけデフォルトIMEのKotoeriを使う。
Qt Widgets
出典: Qt Widgets 6.6.1。
Qtの原点。昔ながらのC++デスクトップアプリ用のモジュール。古くから存在していて、一番安定している。C++のフル機能を利用できる。Qt Quickも悪くはないが、こちらはモバイルファースト。C++技術者ならC++の勉強のためにもQt Widgetsを使うのがいい。Qt QuickはC++をあまり使わなくて、C++の知識の流用・学習が利かない。
main.cpp
出典: Widgets Tutorial | Qt Widgets 6.6.1。
Qt Widgetを使ったアプリは以下のmain.cppから始まるのが基本。
#include <QtWidgets> // Include header files for application components. // ... int main(int argc, char *argv[]) { QApplication app(argc, argv); // Set up and show widgets. // ... return app.exec(); }
QtのアプリはQObjectクラスを全て継承しており、内部で連携している。
QApplicationでインスタンスを生成したら、それ以後にQObject派生クラスを生成したりすると、内部的に連携しているこれでアプリを作っていく感じになる。
Getting Started Programming with Qt Widgets
出典: Getting Started Programming with Qt Widgets | Qt Widgets 6.6.1。
このチュートリアルが良くできている。この中身を理解できれば、それで基本的なアプリを作れると思う。
Qt Designer
出典: Qt Designer Manual。
Qt DesignerはQt WidgetsのGUIエディター。画面でUI部品を構築できて、UI部品をxmlにしてくれる。
Qt Widgetsでの画面開発をかなり簡単にしてくれる。Qt Widgetsの基本を学習したら、たぶんQt Designerを使ったほうがいい。
元々は専用のアプリだったが、今はQt Creatorに組み込まれている。
HTTP
情報源:
- HTTPデータの送受信 | taro3.github.io
- c++ - How do I write a Qt HTTP GET request? - Stack Overflow
- HTTP Client | Qt Network 6.6.1
HTTPサーバーへのリクエストは頻出処理。curlで自分で実装してもいいが、Qtで専用のクラス類が用意されているので使うといい。
具体的には以下の3クラスにお世話になる。
- QNetworkAccessManager: このクラスは、アプリケーションが要求を送信し、応答を受信することを可能にします。
- QNetworkRequest: このクラスは、送信するリクエストをすべての情報(ヘッダ、URL、データなど)と一緒に保持します。
- QNetworkReply: このクラスは、ヘッダーとデータを持つQNetworkRequestクラスの結果を含みます。