сортировать строку по столбцу, когда текст всегда неверный - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь получить текст и данные из столбца с порядковым номером 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();      

 }

UPDATE :
Ну, я нашел ответ, но у меня есть другой вопрос, ответ:

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) в выбранной строке?

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Проблема здесь, скорее всего, заключается в том, что index.row () указывает на строку в прокси-модели после сортировки .Скорее всего, это не та строка в вашей несортированной исходной модели.

Вместо этого попробуйте следующее:

groupID = m_proxy_model->index(iSelectedRow,0).data(Qt::UserRole).toString();
0 голосов
/ 04 июля 2011
QModelIndex modelIndex = m_proxy_model->index(iSelectedRow,0);
m_proxy_model->data (modelIndex ,Qt::UserRole).toString();
0 голосов
/ 04 июля 2011

Вы пытались использовать

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

Возможно, ваши строки установлены неправильно.Если это не помогает, вы должны привести пример дерева, указать, что вы нажимаете, что вы ожидаете, что вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...