Closed glixx closed 10 years ago
При экспорте если вручную не вписать расширение, то не экспортируется.
Не проявляется для qt4, только для qt5.
Что-то мне подсказывает, что в Qt5 проблема с диалоговым окном выбора файл в Linux... В Windows все нормально.
Да, qt5 + linux чего-то не то с диалогами. Может только у меня так, пока не знаю, надо чтобы кто-то воспроизвёл проблему.
Сказали так: "Я с подобным сталкивался. Это, вроде как, нормальная ситуация, а не баг. В то время я решил через проверку на присутствие/отсутствие расширения." Так что получается, что это фича QT5, а проверку на расширение надо делать в коде.
Сделал добавление расширения. Нужно потестить по Linux.
В Linux регистр имеет значение, поэтому, получается что-то подобное: имя.BW.bw, то есть 2 расширения.
По поводу регистра. Я специально использовал функцию SQtring::toLower(), чтобы при сравнении приводилось всё к нижнему регистру. Таким образом, должно нормально обрабатываться расширение. Однако, я нашел в своем алгоритме некоторое допущение, я без основательно предположил, что длина расширения 3 символа. Именно из-за этого добавляется новое расширение у двубуквенных или 4-буквенных.
QFileDialog::setDefaultSuffix удобно использовать, когда у нас только один тип файлов. При экспорте в разные форматы, то нужно ручками обрабатывать. Внес изменения - нужно потестить.
Не помогло, всё также двойное расширение.
Воспроизвел проблему у себя в Windows. Прогнал через отладчик. Нашел ошибку в коде. Кажется, получилось.
Тут походу не хватает условия на наличие галочки (отметил красным). Сложная задачка попалась :(
Скорее всего надо просто условиться и все расширения писать только в нижнем регистре всегда. На рисунке видно, что "4.BW" - это диалоговым окном добавлено, а ".bw" это afce добавляет.
Я даже не предполагал, что такая галочка может быть. Однако код должен был предусмотреть такой вариант. Чувствую, что нужно Linux себе ставить, хотя бы в виртуальную машину :)
Да, хотя бы в виртуалке. В крайнем случае эта галочка только для QT4, поэтому можно добавить условие на версию QT. Но я смотрю пока только KDE, а в разных DE диалоги разные ещё плюсом.
Поставил себе Kubuntu. Диалоговое окно экспорта отличается, и в нем нет такой галочки. Пробовал вручную написать расширение большими буквами - программа отработала корректно и не стала добавлять второе расширение. Так же в списке форматов нет BW-формата. Что я делаю не так? Как мне воспроизвести действия, которые приводят к такой ошибке?
Такая галочка только при сборке под QT4 по крайней мере в KDE так.
Собрал под Qt4 в Ubuntu и смог воспроизвести ошибку! Оказалось, что в qt4 в списках форматов оказалось расширение в верхнем регистре. На основании этого строился фильтр в диалоговом окне. При проверке расширения я имя файла приводил в нижний регистр, а эталонное расширение не приводил. Короче, исправил. Сейчас второе расширение не добавляется, но старое в верхнем регистре по-прежнему остается.
А файл version.txt в исходниках нужен? Может его в игнор добавить?
Галочка "Автоматически выбирать расширение файла" не работает. Если она не выбрана, то по идее расширение добавляться не должно. Её можно как-то отследить или пренебречь?
По поводу version.txt, ничего страшного не будет, если этот файл пока будет присутствовать. Честно говоря, я пока не освоил гитхаб в полной мере, и у меня пока нет навыка управления версиями выпусков. Тут, вроде, есть релизы и метки, но я этот функционал пока не изучал. Что касается галочки в диалоговом окне, раз ее нет в пятой версии, то стоит наверно ею пренебречь и в будущем оставить релиз только для Qt 5. Поддерживать Qt 4 становится всё сложнее и сложнее.
Решено.
Под qt5 заметил, что если сохранить файл, то не добавляется расширение .afc к имени файла.