「Qt」の版間の差分

提供:senooken JP Wiki
(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

参考になる情報源がいくつかある。

Mastering Qt5という本があり、それを翻訳している人がいる。

License

情報源:

Qtには3種類のライセンス形態がある。

  1. 商用: 有償。不自由ソフトの開発用。
  2. GPLv3: 自由ソフト用。
  3. LGPLv3: 無償で不自由ソフトの開発に使用可能。ただし、ユーザーにQt部分のライブラリーを置換可能な手順・プロジェクトファイル群の提供が必要で、使用可能なモジュールの制限が多い。Stack Overflowや公式サイト (Open Source Development | Open Source License | Qt) 説明がわかりやすい。

LGPLv3の義務は以下。

  • Qtライブラリの再リンクメカニズムを提供する
  • ライセンスのコピーを提供し、Qtの使用を明示的に記載する
  • Qtソースコードのコピーを顧客が利用できるようにする
  • Qtソースコードの変更が独占的でないことを了承する
  • 「オープン」なコンシューマデバイスを作成する
  • デジタル著作権管理の条件に同意する(GPL FAQをご覧ください)
  • ソフトウェア特許を施行しようとするときは、特別な配慮が必要(FAQ

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サーバーへのリクエストは頻出処理。curlで自分で実装してもいいが、Qtで専用のクラス類が用意されているので使うといい。

具体的には以下の3クラスにお世話になる。

  • QNetworkAccessManager: このクラスは、アプリケーションが要求を送信し、応答を受信することを可能にします。
  • QNetworkRequest: このクラスは、送信するリクエストをすべての情報(ヘッダ、URL、データなど)と一緒に保持します。
  • QNetworkReply: このクラスは、ヘッダーとデータを持つQNetworkRequestクラスの結果を含みます。