作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 QListView
设置自定义 QAbstractListModel
作为模型。该模型从数据库加载数据并将其全部放入 QList<QHash<QString, QString> > dataList
中数据结构。每个QHash<QString, QString> data
包含类似 data["id"]
的内容和 data["name"]
. data["name"]
值传递给 QListView
通过模型的 data()
方法。现在我要做的是访问 QHash<QString, QString>
当在 QListView
中单击项目时属于来自另一个小部件的单击项目.
所以像这样...
connect(view, SIGNAL(clicked(...)), someOtherWidget, SLOT(foo(...))
例如,在 foo() 中我们可以做...
void someOtherWidget::foo(const QHash<QString, QString>& customData) { QMessageBox::information(this, "User ID", customData["id"]; }
它会在消息框中显示项目的 id。
最佳答案
您可以在 data() 函数中使用特殊角色。data() 然后将返回 QHash
QVariant yourModel::data( QModelIndex index, int role )
{
....
if( role == myCustomRole )
{
return QVariant::fromValue( myData[ index.row ] )
}
....
}
然后在你的 foo 函数中
QHashMap<QString, QString> & model =
view->model()->data( view->selectedIndex(), myCustomRole )
.value< QHashMap<QString, QString> >();
关于c++ - 单击 View 中的项目时从另一个小部件访问自定义模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7601069/
我是一名优秀的程序员,十分优秀!