![]() |
|
|
![]()
|
|
| BiTOk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 23.12.2010 Репутация: нет Всего: нет |
Добрый день. Бьюсь над проблемой: как засунуть в QSettings объект QList<QString>. Почитал в инете, получилось так:
В итоге получаем файл настроек: [recentFiles] files=Test После повторного запуска recentFilesList пуст, т.е. пустой QList<QString>. Как правильно реализовать задуманное? |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| BiTOk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 23.12.2010 Репутация: нет Всего: нет |
Интересное решение. А можно как-то так, чтобы сразу припаковал весь QList, а потом вытащил его же, не думая о его размере и т.д.?
ADD Попробовал добавить несколько элементов в QList, в файл настроек они записываются верно, стало быть неверно реализовано чтение.
т.е. что-то здесь не верно. Это сообщение отредактировал(а) BiTOk - 20.1.2011, 15:55 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
В случае со строками и с именами файлов, я бы сделал проще:
только recentFilesList должен быть не QList< QString >, а QStringList -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Batbko |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.12.2010 Репутация: нет Всего: нет |
BiTOk, твоя ошибка в том что ты регистрируешь класс в метаобьектной системе только в compile-time, что всего лишь делает доступным использование шаблонной функции QVariant::value() и QVariant::setValue(), а для этого тип элемента с которым будет работать функция надо знать на этапе компиляции.
QSettings же использует рантайм информацию о типе и, не имеет никакого понятия о том как обрабатывать обьекты класса QList<QString>. То что тебе удалось что либо записать для меня пока-что необьяснимо. Для того что-бы зарегистрировать класс в метаобьектной системе так, чтобы о нём имелась run-time информация необъодимо использовать функцию qRegisterMetaType(). Для того чтобы можно было (де)серриализовать обьект необходимо определить операторы вида : QDataStream &operator<<(QDataStream &out, const Регистрируемый_класс &myObj) и QDataStream &operator>>(QDataStream &in, Регистрируемый_класс &myObj) (для класса QList эти операторы уже реализованны разработчиками). Затем надо вызвать функцию qRegisterMetaTypeStreamOperators(), и тип станет доступен к использованию в любых средствах типа QSettings. P.S. пример в аттаче. Присоединённый файл ( Кол-во скачиваний: 9 )
Qsettings_stringlist.zip 1,72 Kb |
|||
|
||||
| panter |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 10.1.2011 Где: Санкт-Петербург Репутация: нет Всего: нет |
Пиплы, что-то я вас не пойму.
QVariant ( const QStringList & val ) Т.е. QStringList отлично сохраняется в QSettings. А что есть QStringList? На крайняк есть QStringList ( const QList<QString> & other ) |
|||
|
||||
| Batbko |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.12.2010 Репутация: нет Всего: нет |
ну дык для общего развития
|
|||
|
||||
| BiTOk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 23.12.2010 Репутация: нет Всего: нет |
borisbn, спасибо за решение.
Batbko, спасибо за науку, не шарю ещё в метаобъектах.. Буду разбираться. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
такого же простого обратного, к сожалению, нет. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| panter |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 10.1.2011 Где: Санкт-Петербург Репутация: нет Всего: нет |
borisbn, QList<T> QList::mid ( int pos, int length = -1 ) const разве не оно?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
panter, это чего-то я протупил. Можно ещё проще:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |