【发布时间】:2013-12-15 19:35:43
【问题描述】:
我的应用程序中有一个带有数据模型的 QTreeView。当使用以下插槽双击项目时,我正在捕获:
void MainWindow::on_treeView_doubleClicked(const QModelIndex &index)
{
if (index.parent().isValid()) {
QSharedPointer<GMResource> resource;
resource = index.data(Qt::UserRole).value<QSharedPointer<GMResource> >();
Workspace::GetSingleton()->OpenResourceEditor(resource);
}
}
我希望 QModelIndex::data() 方法(执行并)返回该索引引用的项目的底层 QStandardItem::data(),但它不返回任何内容。我在 QStandardItem::data() 方法中设置了一个断点,它甚至没有被调用,所以我可能错误地假设了 QModelIndex::data() 实际返回的内容。
如何访问QModelIndex引用的项目数据(例如访问我添加到模型中的原始QStandardItem)。
这是我的data() 派生类的data() 方法:
virtual QVariant data( int role) const {
if (role==Qt::UserRole) {
return QVariant(resource);
}
return QStandardItem::data(role);
}
任何帮助将不胜感激
【问题讨论】:
标签: c++ qt qt5 qtreeview qtgui