LINUX.ORG.RU

[qt] Численный индекс в QMap

 


0

0

Есть некая своя модель, наследованная от QAbstractTableModel.

Данные у меня хранятся в QMap<QString, CUser *>, и выдаются наружу примерно вот так

CUser * User = Users.at( Users.keys().at( index.row() ) );
Всё вроде хорошо, т.к. ключи в QMap всегда отсортированны.

Проблема в том, что у меня в модель данные переодически добавляются из внешнего источника, и, чтобы View/QSortFilterProxyModel работали нормально, требуется найти, в какую позицию (строку) в QMap будет вставляться значение. В линуксе всё прекрасно работает так:

InsertRow = qLowerBound(Users.keys(), NewUsername) - Users.keys().begin();
Но на Windows в InsertRow всегда полная каша.

Как найти численный индекс в QMap по ключу? Или может быть мне всё сделать по другому?

P.S. без QMap не получится никак...

★★★★

И, да компилятор - msvc.

Получение из QMap выглядит страшно и неправильно....

Kosyak ★★★★
() автор топика

Вообщем, временно решил проблему так:

int InsertRow = 0;
QMap<QString, CUser *>::const_iterator Iterator = Users.lowerBound(Username);
while(Iterator != Users.constBegin())
{
    Iterator--;
    InsertRow++;
}

Kosyak ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.