ere*_*eOn 5 c++ qt model qabstractlistmodel qmenu
我创建了一个模型,该模型列出了现有配置(假设它列出了“文件”,因为这在这里并不重要)。到目前为止,将其附加到时效果很好QListView。
例:
--- ListView ---
- file #1 -
- file #2 -
- file #3 -
- file #4 -
----------------
Run Code Online (Sandbox Code Playgroud)
是否可以将同一模型用于动态更新QMenu?
就像是:
Menu
-> Submenu #1
-> Submenu #2
-> File-submenu
-> file #1
-> file #2
-> file #3
-> file #4
-> Submenu #3
Run Code Online (Sandbox Code Playgroud)
简而言之:是否有任何方法可以根据模型(源自)创建动态更新的QActions(分组为同一QMenu)的列表?QAbstractListModel
如果您的目标只是使用 中可用的项目文本更新菜单操作QAbstractListModel,那么答案是“是”。
这里有一个方法..
可以使用以下函数获取单个项目的索引。
QModelIndex QAbstractListModel::index ( int row, int column = 0,
const QModelIndex & parent = QModelIndex() ) const [virtual]
Run Code Online (Sandbox Code Playgroud)
根据获得的索引,可以通过以下方式获得数据:
QVariant QModelIndex::data ( int role = Qt::DisplayRole ) const
Run Code Online (Sandbox Code Playgroud)
然后可以通过使用获得索引中可用的文本,
QString QVariant::toString () const
Run Code Online (Sandbox Code Playgroud)
现在,使用获得的 QString,您可以向菜单添加操作。
QAction * QMenu::addAction ( const QString & text )
Run Code Online (Sandbox Code Playgroud)
您必须确保的是,您应该能够遍历 Model 中的所有项目,以便获得每个项目的索引。希望能帮助到你..