Название: QFileDialog и его статические функции под Windows Отправлено: Yuriy от Октябрь 06, 2011, 12:03 Всем привет !
Раньше не так обращал внимание, но теперь пытаюсь разобраться. При использовании getExistingDirectory, getOpenFileName, getOpenFileNames и getSaveFileName в домашней папке Documents and Settings создается директория ?377№?73 такого типа, если профиль назван русскими буквами. А также постоянно выводится ошибка о том что такой каталог не найден. Если создавать диалоги с использованием QFileDialog* newDialog = new QFileDialog; тогда проблема исчезает. Оно и понятно: вот что говорит ассистент: On Windows, Mac OS X and Symbian^3, this static function will use the native file dialog and not a QFileDialog. Кстати говоря, при использовании некоторых плагинов Opera тоже создается такая папка с кривым именем в Documents and Settings. Может быть у кого-нибудь есть готовый case для этой проблемы или лучше переписать все диалоги с использованием QFileDialog ??? Название: Re: QFileDialog и его статические функции под Windows Отправлено: blood_shadow от Октябрь 06, 2011, 19:09 а просто сделать:
Код ? Название: Re: QFileDialog и его статические функции под Windows Отправлено: Yuriy от Октябрь 07, 2011, 03:54 Почему то настораживает меня использование QTextCodec. Легко понять почему. 2 года веду свои проекты и уже отладил в целом. А теперь после этой надстройки я так понимаю поплывут все преобразования QString. Там же у меня БД SQlite3 и вообще много работы проделано. Сейчас установлю QTextCodec и начнутся то там то здесь непредвиденные ошибки. То что раньше преобразовывалось в Latin1 string начнет плыть и вести не как хотелось бы.
Переписал 17 диалогов. Все решилось. Название: Re: QFileDialog и его статические функции под Windows Отправлено: blood_shadow от Октябрь 07, 2011, 11:46 ну не знаю, по моему это ксотыль, с самого начала задать и больше не мучаться, у самого
есть программа с БД MySQL но так все в юникоде и проблем нет никаких Название: Re: QFileDialog и его статические функции под Windows Отправлено: Yuriy от Октябрь 07, 2011, 15:23 Сразу не знал. Кстати говоря, диалог выбора каталогов встроенный в Qt гораздо удобнее:
Код: QFileDialog *aDialog = new QFileDialog(this,QString::fromUtf8("Выберите папку для временных файлов..."),QDir::tempPath()); Он не такой кривой, как я думал раньше, а гораздо удобнее штатного списка папок. К тому же аналогичный диалог для всех платформ и для Linux и МакОС. Название: Re: QFileDialog и его статические функции под Windows Отправлено: blood_shadow от Октябрь 07, 2011, 15:39 у тебя после этого
Код: delete aDialog; //чуть не забыл ты задал родителя диалогу, а потом удаляешь, после этого когда будет вызываться "parent" твоего диалога он еще раз попробует удалить твой диалог, но на этот раз в своем деструкторе... Название: Re: QFileDialog и его статические функции под Windows Отправлено: Yuriy от Октябрь 07, 2011, 17:03 В этом весь прикол и заключается. Как ни странно, если я вместо this укажу 0 для QAction, тогда valgrind ругается на memory leak, а если указать this, тогда действительно для QAction срабатывает деструктор. Но не для QFileDialog. Если не вызывать delete при каждом диалоге тогда будут memory leak, либо можно определить его как static и не создавать его каждый раз и он будет удален, если будет прописан в секции private.
Выяснил случайно, у меня есть диалог на базе QFileDialog, в котором я добавил дополнительный Layout с просмотром картинок, checkBox'aми и прочими прелестями жизни. Такой диалог весил ~5Мб и после 10 раз использования вес аппликации вырастал на 50 Мб соответственно. Опять же почему под Linux не вся память возвращается. Но и не занимается больше при новых включениях. Какая оптимизация? Но в Windows XP это четко срабатывает. malloc, realloc, free все прозрачно. Название: Re: QFileDialog и его статические функции под Windows Отправлено: blood_shadow от Октябрь 07, 2011, 17:05 В этом весь прикол и заключается. Как ни странно, если я вместо this укажу 0 для QAction, тогда valgrind ругается на memory leak, а если указать this, тогда действительно для QAction срабатывает деструктор. Но не для QFileDialog. Если не вызывать delete при каждом диалоге тогда будут memory leak, либо можно определить его как static и не создавать его каждый раз и он будет удален, если будет прописан в секции private. это странно как-то... а "parent" правильно удаляется?Название: Re: QFileDialog и его статические функции под Windows Отправлено: Yuriy от Октябрь 07, 2011, 17:08 Абсолютно !
Название: Re: QFileDialog и его статические функции под Windows Отправлено: BRE от Октябрь 07, 2011, 17:42 это странно как-то... а "parent" правильно удаляется? Это нормально. :)При удалении объект выписывается из списка parent. |