カテゴリー: QtQuick

Qt Quick で双方向のバインディングを実現する

はじめに Qt Quick でよくハマるところの一つがプロパティのバインディングと代入まわりです。 特に、このオブジェクトのこのプロパティと、べつのオブジェクトのこのプロパティを相互に同期しようと以下のように記載すると 大量に QML SpinBox: Binding loop ...

Qt 5 の Qt Quick アプリのバイナリには qml のソースコードが含まれている

はじめに みなさん Qt Quick でアプリ書いていますか?便利でいいですよね! 最近こんな相談を受けました。 Qt Quick でアプリを書いているのですが、アプリのバイナリの中身に qml や js のソースコードがそのまま含まれているのですがなんとかなりませんか? 状況と...

.qml ファイルのキャッシュを消す方法

Qt Quick のソースコードである .qml ファイルはテキストファイルで、アプリケーションの実行時に QQmlEngine というクラスを利用して、インタープリタとして実行されます。 ただ、起動時に毎回毎回ファイルのパースを行うとパフォーマンスが遅くなるため、Qt 5.8 ...

QtQuick の ListModel を継承して使いたい

はじめに ListModel と ListElement はよく使うエレメントですが、実は Qt Quick の中では一風変わったエレメントだということに気づいたことはありませんか? 一般的な QML のエレメントは「あらかじめ定義されているプロパティを設定する記述をする」もしく...

QUrl をローカルファイルに変換する

Qt Quick では、(主に画像ですがその他形式のファイルなどの)外部のリソースを扱う際に QUrl 形式を利用します。 Image エレメントの source プロパティ Loader エレメントの source プロパティ FontLoader エレメントの source ...

Qt Quick で SVG を表示する

Qt では QtSVG モジュールを利用して SVG ファイルを扱うことが可能です。 (SVG Tiny 1.2 の static feature をサポートしていて、それ以外の機能には対応していません。) Qt Quick では、Image エレメントを利用して画像の表示が可能...

QML にグローバル関数を追加する方法

はじめに QML や QML で利用される JavaScript にグローバル関数を追加したいことがたまに(たまに)ありますね。 やりかた QQmlEngine の rootContext に contextObject を設定してあげることで、その QObject が提供してい...

ListModel をある単位で分割したモデルを利用したい

年に一回くらいの頻度で ListView を使うけれど1画面に表示するアイテムの数は固定で SwipeView で複数ページに分けたい と思うことがあります。 ListView で縦スクロールするのではなく、SwipeView の横スクロールで表示を切り替えるってことです。 様々...