Название: QSettings в буфер Отправлено: Givoi от Декабрь 27, 2011, 21:12 Добрый вечер.
Сразу скажу, Qt использую только неделю. Заранее извиняюсь за все косяки. теперь вопрос: есть файл с конфигурациями, создаваемый и заполняемый так: Код: QSettings *settings = new QSettings("settings.cfg",QSettings::NativeFormat); читаем: Код: QSettings *settings2 = new QSettings("settings.cfg",QSettings::NativeFormat); Приложение будет часто обращаться к конфигурациям, следовательно если их всё время читать из файла, это будет занимать много времени, возможно как то сохранять содержимое файла в буфер, и работать с ним, в качестве буфера использовать QList, но как потом обращаться к нему хз, если это будет массив то по ключу к нему не обратиться, только по индексу элемента? или я ошибаюсь? вообщем нужна Ваша помощь. Название: Re: QSettings в буфер Отправлено: asvil от Декабрь 27, 2011, 21:38 qsettings буферизирует настройки
Название: Re: QSettings в буфер Отправлено: Givoi от Декабрь 27, 2011, 21:40 а как к ним обратиться тогда?
Название: Re: QSettings в буфер Отправлено: kambala от Декабрь 27, 2011, 22:37 через объект QSettings как обычно, только лучше наверное создавать его на стеке:
Код
Название: Re: QSettings в буфер Отправлено: Givoi от Декабрь 28, 2011, 17:38 Сделал через QMap
Код
немного мудрено, но работает. Всем спасибо! Название: Re: QSettings в буфер Отправлено: kambala от Декабрь 28, 2011, 17:43 не зря ж я сказал про создание на стеке - у тебя сейчас утечка памяти в первых двух функциях. если к этим функциям идёт довольно частое обращение, то проще уж объект типа QSettings сделать членом класса (или, если не хочется эти функции засовывать в класс, то глобальной переменной, но это не лучший подход).
Название: Re: QSettings в буфер Отправлено: Givoi от Декабрь 28, 2011, 17:52 если к этим функциям идёт довольно частое обращение весь смысл кода - как можно меньше обращаться к ним, особенно к чтению, идет проверка - если в QMap есть то что нужно, то берется от туда. Ну или по крайней мере это задумывалось. Название: Re: QSettings в буфер Отправлено: kambala от Декабрь 28, 2011, 22:15 кстати, проверять на пустую строку лучше методом isEmpty(), а не сравнением с "". и в качестве пустой строки лучше возвращать QString() вместо "".
Название: Re: QSettings в буфер Отправлено: Givoi от Декабрь 28, 2011, 22:33 ок, спасибо
Название: Re: QSettings в буфер Отправлено: JamS007 от Январь 03, 2012, 23:04 Givoi, kambala тебе дело говорит. У тебя утечка памяти, похоже ты не только с Qt неделю знаком, но и с С++ не очень долго дружишь. Поясню как смогу :)
Код В этих функциях ты создаешь объекты settings и settings2 в куче (на хипе), то есть, каждый раз, когда ты вызываешь какую нибудь из этих функци ОС для этих объектов твоему приложению выделит дополнительную память. Ты ее никак не освобождаешь, и соответственно расходуешь память впустую. Хоть ты и кэшируешь вызовы (не уверен, не разбирался толком с кодом) но так делать - плохая привычка. Варианты решения: 1. Удалять обьекты, тем самым освобождая память: Код
2: Создавать объекты на стеке (примечательней) Код
|