我正在尝试从所选行的索引号0
中的列中获取文本和数据
但是我从来没有得到正确的数据我使用简单的模型视图TreeView
和QSortFilterProxyModel
代理来排序列,QStandardItemModel
作为模型
这是在每次双击
上触发的插槽功能connect(ui.treeView_mainwindow, SIGNAL(doubleClicked( const QModelIndex &)), this,SLOT(tree_itemClicked( const QModelIndex &)));
....
...
void MainWindowContainer::tree_itemClicked(const QModelIndex & index)
{
int iSelectedRow = index.row();
QString groupID;
QString groupName;
groupID = m_model->item(iSelectedRow,0)->data(Qt::UserRole).toString();
groupName = m_model->item(iSelectedRow,0)->text();
}
更新:
好吧,我找到了答案,但我有另一个问题,答案是:
QString groupID = index.model()->index(index.row(), 0, index.parent()).data(Qt::UserRole).toString();
QString groupName = index.model()->index(index.row(), 0, index.parent()).data(Qt::DataRole).toString();
}
我的另一个问题是如何在所选行的索引(例如:3)中将数据设置为列?
答案 0 :(得分:2)
这里的问题很可能是index.row()在排序后指向代理模型中的行。这很可能与未分类的源模型中的行不同。
请尝试以下方法:
groupID = m_proxy_model->index(iSelectedRow,0).data(Qt::UserRole).toString();
答案 1 :(得分:0)
您是否尝试过使用
QStandardItem * QStandardItemModel::itemFromIndex ( const QModelIndex & index ) const;
也许你的行没有正确设置。 如果这没有用,你应该给出一个示例树,指出你点击的内容,你期望的内容,你得到的内容。
答案 2 :(得分:0)
QModelIndex modelIndex = m_proxy_model->index(iSelectedRow,0);
m_proxy_model->data (modelIndex ,Qt::UserRole).toString();