4

Qt のモデルは多かれ少なかれ型に適合し、したがって最終的にはリスト、テーブル、またはツリーで表されますか? モデルが非常に複雑で、リスト、テーブル、またはツリーで表現できない場合はどうすればよいでしょうか?

もしそうなら、モデルはただのデータになると思います。XML ファイルまたはスプレッドシートに相当するもの。

例: 問題のアプリケーション内のモデルが、車のようにもっと複雑なものだったら? 車のモデルには、車に関するあらゆる種類のデータとビジネス ルールが含まれていると思います。エンジン、ホイール、フレーム、その他多くのさまざまなコンポーネントが連携して車全体を構成します。フレームには色、エンジンには温度、ステレオには音量設定などがあります。また、各コンポーネントにも動作があります。アクセル ペダルを踏むと、車輪が回転し、エンジンが加熱されます。明らかに、QStringListModel組み込みの単純化されたモデルでは、自動車のすべての複雑さに適切に対処することはできません。

4

2 に答える 2

2

モデルはデータではなく、一連のコールバックです。実際、モデルの背後に実際のデータが存在する必要はありません。照会されるサーバーに似ています。

これは、次のような違いです。

int data[5] = { 0, 2, 4, 6, 8 };
void viewer(int *data, int n) {
    for (int ii = 0; ii < n; ii++)
        printf("%d, ", data[ii]);
}
int main() {
    viewer(data, 5);
}

この:

int model(int index) {
    return index * 2;
}
typedef int (*model_function)(int);
void viewer(model_function model, int n) {
    for (int ii = 0; ii < n; ii++)
        printf("%d, ", model(ii));
}
int main() {
    viewer(model, 5);
}

どちらも を提供します0, 2, 4, 6, 8が、モデルは実際には同じ値を提供するために配列を必要としません。

于 2012-11-18T18:28:54.090 に答える
1

ここで Qt の MV について読んでみてください: SO に関する同様の質問、そしてもちろんhttp://qt-project.org/ の Model/View Programmingなどのリソースです。また、このテーマを含む VoidRealms による興味深いビデオがたくさんあります - VoidRealms: C++ Qt 47 - Intro to model view programming

一般的に、そして特定のケースでそれを理解するようにしてください-それがQtでどのようになっているのか、そしてすべての質問とあなたの誤解は消えます.

于 2012-11-18T16:32:15.213 に答える