Qt 6.3 の新機能
Qt 6.3 の新しいモジュールと復活したモジュール
Qt 6.3 では以下のモジュールが追加されました:
- Qt Language Server:Language Server Protocol SpecificationとJsonRpc 2.0protocol を実装しています。このモジュールにはパブリック API は含まれていません。
Qt 6.3 では、Qt 6.2 にはなかった以下のモジュールが再導入されました。すべてのモジュールは Qt 6 と CMake ビルドシステムに移植されました。
- Qt PDF(テクニカルプレビュー)
各モジュールの変更点の詳細なリストはQt 6 における Qt モジュールの変更点にあります。
Qt 6.3 の新機能
Qt コアモジュール
- 複数のフューチャーを組み合わせるためのQtFuture::whenAll() とQtFuture::whenAny() 関数を追加しました。
- パーミッション引数を受け付けるQDir::mkdir() とQFile::open() オーバーロードを追加。
- QMetaType QFuture<T> を <void> に変換できるようになりました。QFuture
- QDirIterator::nextFileInfo() が追加され、完全なファイル情報を取得できるようになった。
- QLocale言語コードと言語値のマッピングに、どの ISO 639 コードタイプを考慮するかを指定するオーバーロードが追加されました。
- QRegularExpressionMatch hasCaptured() メソッドが追加され、指定されたグループがキャプチャされたかどうかをテストできるようになりました。
- QProcessEnvironment それぞれの が起動されたときに、プロセス環境を親プロセスから継承するかどうかを選択できる新しい列挙型とコンストラクタが追加された。QProcess
警告: 警告: Qt の古いバージョンでは、デフォルトの動作は継承されましたが、ドキュメントには継承されないと書かれていました。Qt 6.3では、デフォルトのコンストラクタの動作が変更されました。つまり、QProcessEnvironment() で作成したQProcessEnvironment でQProcess を起動すると、空の環境で起動します。以前の動作に戻すにはQProcessEnvironment(QProcessEnvironment::InheritFromParent) を使用してください。
また、新しい方法で構築されたインスタンスをテストするためのメソッドinheritsFromParent() が追加されました。
- QVarLengthArray emplace() および () メソッドが追加されました。emplace_back
- QLocale 、QTime 、QDateTime の構文解析とシリアライズで使用される時刻フォーマットは、AM/PM インジケータを取得するために 'aP' と 'Ap' フォーマット指定子を認識するようになりました。QTime とQDateTime では、ロケールは常にCであり、インジケータは大文字である。QLocale では、大文字小文字は amText() または pmText() のものと一致するようになりました。以前は、'aP' は小文字のインジケータに続く 'P'、'Ap' は大文字のインジケータに続く 'p' として読まれていた。P' や 'p' は書式指定子の一部として扱われるようになった。以前の動作を望む場合は、書式指定子として 'APp' や 'apP' を使うか、書式内で 'p' や 'P' を引用符で囲む。以前の'a'、'ap'、'A'、'AP'指定子に影響はありません。
- QDebug QVarLengthArray オブジェクトをストリームできるようになりました。
- QObject::findChildren() に名前を取らないオーバーロードが追加されました。
- std::counting_semaphore および std::chrono との互換性を高めるため、QSemaphore にオーバーロードとメソッド名を追加しました。
- QJsonValue QJsonArray と を取る rvalue コンストラクタが追加されました。QJsonObject
- QCborMap::fromJsonObject() とQCborArray::fromJsonArray() に rvalue オーバーロードが追加されました。
- QByteArrayView::trimmed() が追加され、先頭と末尾のスペースが消去されるようになった。
- QByteArrayView に数値解析メソッドを追加しました。
- QByteArray 、QByteArrayView 、およびQUtf8StringView に isValidUtf8() メソッドを追加した。
- result() に対するビューを提供するQCryptographicHash::resultView() を追加。
- QStringBuilder がQByteArrayView をサポートするようになりました。
- QUuid が から構築できるようになりました。QAnyStringView
- QLocale QStringView を取るコンストラクタが追加されました。
- QByteArrayList::join() にQByteArrayView を取るオーバーロードが追加されました。
- QCryptographicHash::addData() にQByteArrayView を取るオーバーロードが追加されました。
- qSwap() が constexpr になった。
- 新しいパブリックCMake APIが追加されました:
- プロジェクト全体のデフォルトを設定する:qt_standard_project_setup()
- アプリケーションのデプロイ:qt_generate_deploy_app_script()(Technical Preview)
- インストール時に qt.conf ファイルを生成する:qt_deploy_qt_conf()(Technical Preview 版)
- インストール時にランタイムの依存関係を展開する:qt_deploy_runtime_dependencies()(Technical Preview 版)
- Qt プロジェクトに関連するプラットフォーム固有のタスクを実行する:qt_finalize_project()(Technical Preview 版)
Qt GUI モジュール
- QGuiApplication::setLayoutDirection() を自動でない値で呼び出すと、インストールされているトランスレータに基づく自動検出が無効になるようになりました。
- QDesktopServices::setUrlHandler() に渡された URL ハンドラは、破棄される前にunsetUrlHandler() を呼び出して削除しなければならなくなりました。ハンドラのデストラクタに依存して暗黙的に設定を解除することは非推奨となりました。
- QVulkanWindow 物理デバイスでサポートされていると報告されているすべての Vulkan 1.0 機能が有効になりました。
Qt Quick モジュール
- 新しい項目が追加されました:TreeView.
- すべてのポインタハンドラに設定可能な
parent
プロパティが追加されました。 - HoverHandler と には プロパティがあり、hover イベントと wheel イベントがそれぞれハンドラの の後ろのアイテムとハンドラに伝搬するかどうかを制御します。WheelHandler
blocking
parent
- TapHandler gesturePolicy
DragWithinBounds
WithinBounds
と似ていますが、ユーザーがポイントを押したままドラッグしても、 はドラッグ中にリセットされず、 シグナルはドラッグのしきい値に関係なく発せられます。これは、 を使って "オープニング "アニメーションを直接駆動しながら、(ポインタハンドラの例のパイメニューのような)メニューのようなプレス・ドラッグ・リリース・コンポーネントを実装するのに便利です。timeHeld longPressedtimeHeld
- QQuickItem::clipRect() は、viewport (親Flickable またはWindow) で表示される領域を提供するようになり、updatePaintNode() がより頻繁に呼び出される代償として、カスタムアイテムの最適化としてシーングラフノードの頂点を制限するために使用できます。新しいQQuickItem::ItemObservesViewport とQQuickItem::ItemIsViewport フラグについてはドキュメントを参照してください。
- メモリと起動時間を節約するために、Text とTextEdit は、ビューポートの外側にあるために見えないテキストの大部分 (Flickable またはWindow) に対して、シーングラフノードを生成しないようになりました。
- Text HTMLまたはMarkdownから水平方向の罫線をレンダリングするようになりました。
- Text で、水平罫線と下線/上線/取り消し線は、HTMLソースに含まれるCSSルールで色付けできるようになりました。
import QtQuick Text { textFormat: Text.RichText wrapMode: Text.WordWrap width: 440 font.pointSize: 12 text: `<p><u style="color: green;">green with underline</u> <span style="text-decoration: underline; text-decoration-color: green;"> green underline</span></p> <p><s style="background-color: lightgrey;">plain strikethrough</s> <span style="text-decoration: line-through; text-decoration-color: orange;"> orange strikethrough</span></p> <p><span style="text-decoration: overline;">plain overline</span> <span style="text-decoration: overline; text-decoration-color: red;"> red overline</span></p>` }
- QQuickItem::dumpItemTree() が追加されました。C++(QObject::dumpObjectTree() と同様)または QML から呼び出すことができ、qDebug-operator の出力をアイテムおよびそのすべての子に対して、ツリー構造を示すようにインデントして表示します。
- TapHandler tapped singleTapped と シグナルは、 インスタンスと、 タップされたものという2つの引数を持つようになりました。シグナル・ハンドラが必要な場合は、これらの引数を受け取る明示的な関数を書く必要があります:doubleTapped QEventPoint
button
onTapped: function(point, button) { ... } onDoubleTapped: (point, button)=> ...
- DragHandler activeTranslation persistentTranslation は、その後のドラッグ・ジェスチャー中に発生した移動の累積合計を保持し、ジェスチャー間で任意の値にリセットできます。
Qt Quick Controls モジュール
- 新しいコントロールが追加されました:TreeViewDelegate,Calendar,CalendarModel,DayOfWeekRow,MonthGrid,WeekNumberColumn.
Qt Quick Dialogs モジュール
- FolderDialog とMessageDialog を追加しました。これらは、Qt Quick をサポートしているプラットフォームではネイティブダイアログ、それ以外のプラットフォームでは非ネイティブの Qt Quick ダイアログです。
非ネイティブダイアログはすべての非ネイティブスタイルをサポートしています:Basic、Fusion、Imagine、Material、Universal です。
Qt ウィジェットモジュール
- QToolBar が、キネティックホイールやトラックパッドによるスクロールをサポートしました。
ウィジェットベースの UI のルック&フィールをカスタマイズできるように、QStyle の列挙値が追加されました:
- PM_LineEditIconMargin QLineEdit のアイコンの周りのマージンをカスタマイズする。
- SH_Table_AlwaysDrawLeftTopGridLines ヘッダーが隠されているときにも、左と上のグリッド線が常に描画されるかどうかを制御する。
- SH_SpinBox_SelectOnStep 上下ボタンで値を変更する際に、テキストを選択するかどうかを制御する。
- SP_TabCloseButton のタブで閉じるボタンのアイコンを指定します。QTabBar
Qtネットワークモジュール
- QNetworkInformation transportMedium を学びました。プライマリネットワークインターフェースのトランスポートメディアを返すプロパティ。
- QNetworkInformation isMetered も学習済み。ネットワークが従量制かどうかを返すプロパティ。
Qt QML モジュール
- QML 型構造を C++ にコンパイルする技術プレビュー QML 型コンパイラー (
qmltc
) を追加しました。 - コンパイラのインフラストラクチャを使用するようになった qmllint に、いくつかの新しい警告を追加しました。
- ヘッダのみのqmlintegrationモジュールにより、qtdeclarativeへの依存を追加することなく、QMLモジュールに登録する型をマークできるようになりました。これらの型は、新しいqt_generate_foreign_qml_types()CMake API を使って QML モジュールに追加することができます。
- qmlcachegen が適切な関数や式を C++ にコンパイルするようになり、パフォーマンスが向上しました。
- 新しいパブリック CMake API を追加しました:
- ターゲットの外部型を QML モジュールに登録する:qt_generate_foreign_qml_types()(Technical Preview)
- QML コードを C++ にコンパイルする:qt_target_compile_qml_to_cpp()(Technical Preview)
- QML アプリケーションのデプロイ用:qt_generate_deploy_qml_app_script()(Technical Preview)
- インストール時に QML モジュールのランタイムコンポーネントをデプロイする:qt_deploy_qml_imports()(Technical Preview)
- QML モジュールの情報を問い合わせる:qt_query_qml_module()(Technical Preview)
Qt Quick 3D モジュール
- ReflectionProbe を追加し、モデルに反射を表示できるようにした。
- Particles3D: カスタム CBOR バイナリファイルから発光形状をロードする新しい
ParticleCustomShape3D
要素を追加しました。 - Particles3D: スプライトパーティクルが 3D 環境ライトに対応しました。
- Particles3D: 宣言的なダイナミック発光とトレイル開始/終了時の発光のための新しい
DynamicBurst
。 - リソースの寿命を明示的に設定するためのResourceLoader コンポーネントを追加しました。
- PrincipledMaterial:クリアコート(ClearCoat)、透過(Transmission)、屈折(Refraction)のサポートを追加。
- glTF2: インポーターが以下の追加拡張をサポートするようになりました:KHR_materials_clearcoat、KHR_materials_ior、KHR_materials_transmission、KHR_materials_volume。
Qt WebEngineモジュール
- Python 2の代わりにPython 3でビルドできるようになりました。
- QML のタッチ選択メニューを置き換える API を追加した
- 新しいパブリックCMake APIを追加:
- Hunspell 辞書を QtWebEngine
.bdic
のバイナリ形式に変換するための API:qt_add_webengine_dictionary() を追加しました。
- Hunspell 辞書を QtWebEngine
Qt Data Visualization モジュール
- Q3DSurface のQSurface3DSeries のワイヤフレーム色を設定する新しいwireframeColor プロパティを追加しました。
- Q3DBars のバーの行に異なる色を設定する新しいrowColors プロパティを追加しました。
- Q3DBars の個々のバーのマージンを設定する新しいbarSeriesMargin プロパティを追加した。
- QAbstract3DGraph に、系列が既に追加されているかどうかをチェックするhasSeries 関数を追加。
- 16 ビット高さマップのサポートを追加した。
Qt 位置決めモジュール
- Android と iOS プラットフォーム用に、新しいDirectionAccuracy 属性を追加しました。これは、提供された方位の精度を表します。
Qt Bluetooth モジュール
- QBluetoothLocalDevice の Windows 実装を拡張しました。 アダプタの状態を正しく報告し、状態を切り替えることができます。接続/切断されたデバイスのトラッキングのサポートはまだありません。
- QBluetoothDeviceInfo API を拡張し、アドバタイズ中に公開される Bluetooth Low Energy サービスデータを公開できるようにしました。
Qt Waylandコンポジターモジュール
- カスタムシェルエクステンションを作成するためのAPIを追加しました。使い方はサンプルを参照してください。
- Qtで利用可能なすべてのウィンドウシステム機能をサポートするQt Shellを追加した。
- presentation-time プロトコルのサポートを追加。
- 異なるソースからのクライアントをサポートするために、同じサーバーで複数の入力メソッドプロトコルをサポートするようにした。
プラットフォームの変更
技術プレビュープラットフォーム
WebAssembly
Qt for WebAssembly でいくつかの改善が行われました。詳細はQt for WebAssemblyのプラットフォームのドキュメントを参照してください。
- システムクリップボードへの画像や html テキストのコピー/ペーストのサポートを追加しました。
- SIMD サポートを追加しました。SIMD を有効にするには、Qt をソースからビルドする必要があることに注意してください。
- セカンダリスレッドでQEventLoop::exec() とQThread::exec() を呼び出せるようにした。
- Emscripten Asyncify を使用してメインスレッドでQEventLoop::exec() とQDialog::exec() を呼び出せるようにしました。Asyncify を有効にするには、Qt をソースからビルドする必要があります。
- ドラッグ&ドロップが asyncify を有効にしたビルドで動作するようになりました。
- EmscriptensEmulated POSIX TCP Sockets over WebSockets を使用して、WebSocket 上の TCP および UDP ソケットのトンネリングをサポートしました。このサポートはメイン・スレッド上の非同期ソケットに限定されます。
ARM上のWindows
Qt の最適化ビルドに関する問題がまだ解決されていないため、ARM64 上の Windows は技術プレビューのままです。
モバイルプラットフォーム
アンドロイド
- アプリ内課金デモとQt 3D: Planets QML Example にアンドロイド特有の改良を加えました。
- Gradle を 7.2.0 に、Android Gradle Plugin (AGP) を 7.0.2 に更新しました(JDK 11 以上が必要です)。
- CMakeのAndroidプロジェクトに欠落していた_make_aabターゲットを追加。
- QT_ANDROID_ABIS を参照してください。
- QMLモジュールは、ユーザーのビルドフォルダー下の "android-qml "という共通のディレクトリにステージされるようになりました。これは、androiddeployqtツールの共通のインポートパスとして機能します。
- QMLテストベンチがAndroidビルドで動作するようになりました。
iOS
- CMake ベースのプロジェクトがデフォルトの起動画面を生成するようになりました。
組み込みプラットフォーム
Qt への起動
- Boot to Qt スタックが Yocto 3.4 (honister) を使うように更新されました。
- Qt PDF と Qt Language Server が Boot to Qt スタックに含まれるようになりました。
その他
Wayland
DataDeviceV3
プロトコルのサポートを実装した。wl_seat
のサポートをバージョン 7 にアップグレードした。- サーバーが複数のインターフェースをサポートしている場合に、入力メソッドのプロトコルを選択できるようにした。これはQT_WAYLAND_TEXT_INPUT_PROTOCOLをプロトコル名に設定することで可能。
API 変更点のリスト
これらのページでは、Qt 6.3 における API の変更点の概要を説明します:
すべての Qt 6 リリースへの追加
Qt 6.0 の新機能の一覧です。 | |
Qt 6.1 の新機能のリスト。 | |
Qt 6.2 の新機能をリストアップ。 | |
Qt 6.3 の新機能をリストアップ。 | |
Qt 6.4 の新機能を一覧にしました。 | |
Qt 6.5 の新機能をリストアップ。 | |
Qt 6.6 の新機能をリストアップ。 | |
Qt 6.7 の新機能をリストアップ。 | |
Qt 6.8 の新機能をリストアップ。 |
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権はそれぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。