5

既存の構成を一覧表示するモデルを作成しました (「ファイル」を一覧表示するとしましょう。これはここではあまり重要ではありません)。これまでのところ、に接続するとうまく機能しQListViewます。

例:

--- ListView ---
- file #1      -
- file #2      -
- file #3      -
- file #4      -
----------------

動的に更新される に同じモデルを使用することは可能QMenuですか?

何かのようなもの:

Menu
-> Submenu #1
-> Submenu #2
-> File-submenu
  -> file #1
  -> file #2
  -> file #3
  -> file #4
-> Submenu #3

要するに:モデル(から派生)に応じて動的に更新さQActionれた(同じにグループ化された)リストを作成する方法はありますか?QMenuQAbstractListModel

4

5 に答える 5

3

残念ながらQMenuViewクラスはありませんが、ネット上でこの有望な実装を見つけました: QMenuView( qmenuview.hqmenuview.cpp )。

于 2011-08-23T14:12:03.103 に答える
2

目的が で使用可能な項目テキストでメニュー アクションを更新することだけであるQAbstractListModel場合、答えは [はい] です。

ここに方法があります..

個々のアイテムのインデックスは、次の関数を使用して取得できます。

QModelIndex QAbstractListModel::index ( int row, int column = 0, 
const QModelIndex & parent = QModelIndex() ) const   [virtual]

取得したインデックスを使用して、データは次のように取得できます。

 QVariant QModelIndex::data ( int role = Qt::DisplayRole ) const

次に、インデックスで利用可能なテキストは、次を使用して取得できます。

QString QVariant::toString () const

取得した QString を使用して、メニューにアクションを追加できます。

QAction * QMenu::addAction ( const QString & text )

確認する必要があるのは、モデル内のすべてのアイテムをトラバースできるようにして、すべてのアイテムのインデックスを取得できるようにすることです。それが役に立てば幸い..

于 2010-06-29T10:16:19.923 に答える
1

あなたの短い質問に答えるために、はい、あります。ただし、自分で作成する必要があります。

簡単な部分は、QAbstractListModelのサブクラスを作成することです。

難しいのは、独自のビューを作成するときです。Qtを使用すると、独自のモデルを作成する場合と同じように独自のビューを作成できますが、すべてを自分で処理する必要があるため、非常に複雑になります。

それは特定の目的のために完全に実行可能ですが、それはあなたが望むよりもはるかに多くの仕事でもあります。したがって、Gianniが言っていたように、Qtのモデルビューフレームワークはこのように使用されることを意図していません。

于 2010-06-28T20:46:07.680 に答える
0

いいえ。モデルは、Qt が使用するモデル ビューフレームワークに従って、ビューでのみ使用できます。

于 2010-06-28T16:58:24.193 に答える