开发者

sort row by column , when getting text always wrong

I'm trying to get text and data from column in index number 0 from row that is selected but I never get the right data I'm using simple model view TreeView with QSortFilterProxyModel proxy to sort the columns and QStandardItemModel as the model

This is the slot function that is triggered on each doubleClicked

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开发者_Go百科->item(iSelectedRow,0)->text();      

 }

UPDATE:

Well, I found the answer but I have another question, the answer is :

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();
}

My other question is how do I set data to column in index ( for example: 3 ) in the selected row?


The problem here most likely is that index.row() points to the row in the proxy model after sorting. This is most likely not the same row in your unsorted source model.

Try the following instead:

groupID = m_proxy_model->index(iSelectedRow,0).data(Qt::UserRole).toString();


Have you tried using

QStandardItem * QStandardItemModel::itemFromIndex ( const QModelIndex & index ) const;

Perhaps your rows are not set properly. If this does not help, you should give an example tree, indicate what you click, what you expect, what you get.


QModelIndex modelIndex = m_proxy_model->index(iSelectedRow,0);
m_proxy_model->data (modelIndex ,Qt::UserRole).toString();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜