Название: QHash- непонятки??
Отправлено: crocus от Март 20, 2006, 16:22
Вообщем вот код QHash<QString, int> hash_valid; hash_valid.insert( "txtSo_0", 1 ); hash_valid.insert( "txtSo_1", 2 );
QHash<QString, int>::const_iterator k = hash_valid.constBegin(); while ( k != hash_valid.constEnd() ) { strValid(k.key()); ++k; } ..........и так далее
void FlatSeach::strValid(QString str) { str.replace(QRegExp ("[A-Za-z]"), ""); str.replace(",", "."); }
Теоретически из полей должны вырезаться буквы и меняться запятая на точку, но получается лабуда. А затупил, на самом деле передается значение, соответственно вопрос как передать указатель???
Название: QHash- непонятки??
Отправлено: Dendy от Март 20, 2006, 17:32
Кхммм... Вообще-то ключи менять нельзя никак через итераторьІ. Только удалением/вставкой новьІх полей. Предлагаю другой вариант: QHash<QString,int> hash, newhash; ... for ( QHashIterator<QString,int> it( hash ); it.hasNext(); ) { it.next(); newhash[ toStrValid( it.key() ) ] = it.value(); } hash = newhash;
Название: QHash- непонятки??
Отправлено: crocus от Март 21, 2006, 02:46
to Dendy Так вообще не работает: flatseach.cpp:509: error: no match for 'operator[]' in 'newhash[((FlatSeach*)this)->FlatSeach::strValid(QString(((const QString&)(+(&it)->QHashIterator<Key, T>::key [with Key = QString, T = int]()))))]' C:/Qt/4.1.0/include/QtCore/../../src/corelib/tools/qhash.h:601: note: candidates are: T& QHash<Key, T>::operator[](const Key&) [with Key = QString, T = int] C:/Qt/4.1.0/include/QtCore/../../src/corelib/tools/qhash.h:595: note: const T QHash<Key, T>::operator[](const Key&) const [with Key = QString, T = int]
Оказалось гораздо проще: QHash<QString, int> hash_valid; hash_valid.insert( txtSo_0, 1 ); hash_valid.insert( txtSo_1, 2 ); QHash<QString, int>::const_iterator k = hash_valid.constBegin(); while ( k != hash_valid.constEnd() ) { strValid(k.key()); ++k; }
Обратите внимание просто убрал кавычки, т.е. теперь в функцию передается значение txtSo_1 :lol:
|