C
Qul::ListModel Struct
template <typename T> struct Qul::ListModelモデルをQMLに公開するには、このクラスを継承します。詳細...
| Header: | #include <qul/model.h> |
| Since: | Qt Quick Ultralite 1.0 |
| In QML: | ListModel |
| Inherits: | Qul::Object |
パブリック関数
パブリック変数
| Qul::Signal<void (int)> | dataChanged |
| Qul::Signal<void ()> | modelReset |
静的パブリックメンバ
| const int | StaticCount |
詳細説明
C++ モデルの使用は、既存の C++ データモデルやその他の複雑なデータセットを QML に公開する際に便利です。C++でモデルを作成することは、読み取り専用でないモデルを持つ唯一の方法です:QMLで定義されたモデルを実行時に変更することはできません。
独自のモデルを作成するには、まずデータモデルを記述する構造体を宣言します。この構造体のパブリックフィールドがモデルのロールとなります。構造体は等価比較可能でなければなりません。
struct AlarmData
{
AlarmData()
: seconds(0)
, running(false)
{}
AlarmData(int argSeconds, bool argRunning)
: seconds(argSeconds)
, running(argRunning)
{}
int seconds;
bool running;
};
inline bool operator==(const AlarmData &lhs, const AlarmData &rhs)
{
return lhs.seconds == rhs.seconds && lhs.running == rhs.running;
}あるいは、Qt Quick Ultraliteでサポートされている単純な型(例えば、intや Qul::qreal)をテンプレートの引数として指定することもできます。
次に、Qul::ListModel から直接派生する構造体を宣言します。
struct AlarmModel : Qul::ListModel<AlarmData>
{
private:
Qul::DynamicList<AlarmData> m_data;
public:
// Implement the ListModel interface
int count() const QUL_DECL_OVERRIDE { return m_data.count(); }
AlarmData data(int index) const QUL_DECL_OVERRIDE { return m_data[index]; }注: Qul::ListModel は、QML インターフェースが動作するために、あなたのモデル型の直接的かつ最初の基底クラスでなければなりません。
この構造体には、QMLアプリケーションがモデルと対話するために使用する追加関数を含めることができます:
void togglePause(int index)
{
m_data.at(index).running = !m_data[index].running;
dataChanged(index);
}modelReset とdataChanged シグナルは、ビューの更新のトリガーとして使われます。
modelReset シグナルは、ビューがインスタンス化された後、モデルの要素数が変更されるたびに発行されなければなりません。
dataChanged シグナルは、モデルの既存の要素が変更されるたびに発行されなければなりません。
動的な文字列
C++からQMLへの文字列の受け渡しは、フォントコンパイラがグリフをどのように生成するかに影響を与えます。いくつかの文字はデフォルトではQMLでレンダリングされない可能性があります。より詳細な説明はQMLにおける動的文字列の描画を参照してください。
Qt Quick Ultraliteのモデルとビュー」、「C++データモデル」、「テキストレンダリングとフォント」も参照してください 。
メンバ関数ドキュメント
[pure virtual] int ListModel::count() const
モデル内のデータエントリ数を返します。
StaticCountも参照してください 。
[pure virtual] T ListModel::data(int index) const
与えられたindex に保存されているデータを返す。
T ListModel::get(int index) const
index にあるアイテムを返します。QML インタフェースとの互換性のために存在します。
dataも参照してください 。
メンバ変数ドキュメント
const int ListModel::StaticCount
モデルの正確な要素数を示す静的メンバ変数で、モデルをリピータで使用するためにはオーバーライドする必要があります。
注: この変数は、派生クラスでstatic const int StaticCount を定義することによってオーバーライドする必要があります。
count()も参照してください 。
Qul::Signal<void (int)> ListModel::dataChanged
指定されたindex にあるアイテムのデータを再読み込みするようにビューに伝えるために、このシグナルを発信します。
modelResetも参照してください 。
Qul::Signal<void ()> ListModel::modelReset
モデルをリロードする必要があることをビューに伝えるために、このシグナルを発行します。これは、行数が変更されたときに発せられなければなりません。
dataChangedも参照してください 。