Russian Qt Forum

Qt => Вопросы новичков => Тема начата: deMax от Ноябрь 26, 2014, 11:31



Название: QMap обращение чарез iterator/ссылку/указатель
Отправлено: deMax от Ноябрь 26, 2014, 11:31
В QMap храню настройки, но для ускорения доступа к элементам хочу обращаться через итератор, ссылку или указатель; есть ли гарантия что с данными по ссылке ничего не случиться, если я не буду вызывать удаление для этого ключа?


Название: Re: QMap обращение чарез iterator/ссылку/указатель
Отправлено: Igors от Ноябрь 26, 2014, 11:52
Да, есть


Название: Re: QMap обращение чарез iterator/ссылку/указатель
Отправлено: Hellraiser от Ноябрь 26, 2014, 11:58
Если требуется только чтение, то быстрее будет использовать const_iterator и связанные с ним constBegin, constEnd и constFind.


Название: Re: QMap обращение чарез iterator/ссылку/указатель
Отправлено: deMax от Ноябрь 26, 2014, 12:13
А как лучше автоматически связать некоторые члены класса с настройками, скажем есть class ViewData {int* sizeText, int* num} с настройками settings["ViewData\sizeText"] и settings["ViewData\num"].
Т.е. чтобы в конструкторе автоматически вызывалось sizeText = &(settings.find("ViewData\sizeText").value());


Название: Re: QMap обращение чарез iterator/ссылку/указатель
Отправлено: Hellraiser от Ноябрь 26, 2014, 12:26
Не совсем понятно, как это относится к теме топика. Автоматически, на мой взгляд, это когда в дизайнере мышкой ткнул и связал какую-то проперть с хранимой настройкой. А при написании кода, все-равно придется считывать из настроек значение и присваивать куда-то. Для этого конструктор и придуман. Можно пойти по пути автоконнекта (http://qt-project.org/doc/qt-4.8/qmetaobject.html#connectSlotsByName) и написать что-то подобное свое для поиска настройки по имени и чтения ее значения.


Название: Re: QMap обращение чарез iterator/ссылку/указатель
Отправлено: deMax от Ноябрь 26, 2014, 13:54
С наследниками GUI созданную QObject примерно понятно, как с обычными членами класса поступить?
Хэш массив в стиле var["sizeText"] = &sizeText или может дефайн какой хитрый написать чтоб в хиадер и конструктор этот код добавил?