Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Николай Кузнецов от Ноябрь 24, 2011, 18:54



Название: QFileDialog::getSaveFileName
Отправлено: Николай Кузнецов от Ноябрь 24, 2011, 18:54
Стоит такая задача. Нужно модифицировать стандартное окно "Сохранить файл".
Собственно вызвать это окно просто, например так:
Код:
void MainWindow::on_actionSave_triggered()
{
    QString stSave = QFileDialog::getSaveFileName(this, tr("Save File"),
                                                 "/home/jana/untitled.png",
                                                 tr("Images (*.png *.xpm *.jpg)"));
}

Но как добраться до самого диалога для его модификации?
В приложении картинка, примерно отражающее то что должно быть в итоге.


Название: Re: QFileDialog::getSaveFileName
Отправлено: madRoger от Ноябрь 24, 2011, 19:11
Либо унаследоваться и реализовать свой диалог либо модифицировать существующий: диалог имеет основной лэйаут, к которому можно обратиться. (см.QWidget::layout()). Далее в лэйаут добавить необходимые виджеты.


Название: Re: QFileDialog::getSaveFileName
Отправлено: GreatSnake от Ноябрь 24, 2011, 23:22
Цитата: assistant
On Windows, Mac OS X and Symbian^3, this static function will use the native file dialog and not a QFileDialog.
Так что, если требуется
добраться до самого диалога для его модификации?
то забудь про статические методы.


Название: Re: QFileDialog::getSaveFileName
Отправлено: Николай Кузнецов от Ноябрь 25, 2011, 01:37
Цитата: assistant
On Windows, Mac OS X and Symbian^3, this static function will use the native file dialog and not a QFileDialog.
Так что, если требуется
добраться до самого диалога для его модификации?
то забудь про статические методы.

Несовсем понял, но звучит устрашающе(


Название: Re: QFileDialog::getSaveFileName
Отправлено: andrew.k от Ноябрь 25, 2011, 02:11
значит, что ты не сможешь в него вклиниться средствами Qt, да и средствами WinAPI наверное едва ли (не силен в WinAPI).

А вообще мое имхо, это диалог-урод. Зачем такое плодить?

Никогда не мог понять, что у людей за манера каверкать стандартные решения.
Чтобы пользователи потом удивлялись, почему ОНО работает не так как всегда и у всех, а "умнее, удобнее или красивее".


Название: Re: QFileDialog::getSaveFileName
Отправлено: Николай Кузнецов от Ноябрь 25, 2011, 02:25
значит, что ты не сможешь в него вклиниться средствами Qt, да и средствами WinAPI наверное едва ли (не силен в WinAPI).

А вообще мое имхо, это диалог-урод. Зачем такое плодить?

Никогда не мог понять, что у людей за манера каверкать стандартные решения.
Чтобы пользователи потом удивлялись, почему ОНО работает не так как всегда и у всех, а "умнее, удобнее или красивее".

Хм. Вы удивитесь, но в том и цель - породить диалог урод! И такой чтобы он желательно заменял стандартный диалог "Сохранить файл" во всех программах в системе. Т.е. в итоге должна получиться утилита, при включении которой диалог заменяется на кастомный.
Ведь есть же такая тулза TeraCopy, она заменяет стандартный функционал системы для работы с буф.обмена на свой собственный, улучшенный. А диалог который я хочу сделать должен решать такую задачу:
Каждому приходиться часто и много сохранять файлов из интернета (из браузера, менеджера закачек, торрент клиента и .т.п), но так как файлы в интернете не всегда имеют понятные\удобные имена, в папках загрузок черт ногу сломит. А я хочу сделать так чтобы при сохранении файла к нему можно было бы добавить краткое текстовое описание, прямо в диалоге сохранения, которое потом сохраниться рядом с файлом в отдельный текстовый файл Description например.


Название: Re: QFileDialog::getSaveFileName
Отправлено: andrew.k от Ноябрь 25, 2011, 02:36
почему это описание не внести в имя файла?


Название: Re: QFileDialog::getSaveFileName
Отправлено: Николай Кузнецов от Ноябрь 25, 2011, 02:47
почему это описание не внести в имя файла?
:o В имя файла? Собственно ограничения на имя файла не позволяют это сделать.


Название: Re: QFileDialog::getSaveFileName
Отправлено: andrew.k от Ноябрь 25, 2011, 03:02
почему это описание не внести в имя файла?
:o В имя файла? Собственно ограничения на имя файла не позволяют это сделать.
Так зачем туда поэму писать? Твой диалог не спасет от помойки.
Я когда-то давно, тоже хотел к каждой программе и файлу описание написать. Тотал коммандер позволяет это делать.
И удобно отображать комментарии к файлам.
В итоге эта идея довольно быстро загнулась. За не надобностью, за ленью. И еще почему, что любого хотябы более менее осмысленного имени файла было достаточно, чтобы вспомнить что за файл.
Тот у кого помойка из файлов наверняка пользуется файловым менеджером и наверняка он тоже поддерживает комментарии.

А по сабжу. При чем тут Qt вообще. Тут надо в winAPI лезть и полностью свой диалог писать и перехватывать стандартный вызов.


Название: Re: QFileDialog::getSaveFileName
Отправлено: Николай Кузнецов от Ноябрь 25, 2011, 03:10
почему это описание не внести в имя файла?
:o В имя файла? Собственно ограничения на имя файла не позволяют это сделать.
Так зачем туда поэму писать? Твой диалог не спасет от помойки.
Я когда-то давно, тоже хотел к каждой программе и файлу описание написать. Тотал коммандер позволяет это делать.
И удобно отображать комментарии к файлам.
В итоге эта идея довольно быстро загнулась. За не надобностью, за ленью. И еще почему, что любого хотябы более менее осмысленного имени файла было достаточно, чтобы вспомнить что за файл.
Тот у кого помойка из файлов наверняка пользуется файловым менеджером и наверняка он тоже поддерживает комментарии.

А по сабжу. При чем тут Qt вообще. Тут надо в winAPI лезть и полностью свой диалог писать и перехватывать стандартный вызов.

Может Qt и не причем. Просто хотел реалиазовать на нем пример работающей проги, для демонстрации людям которые возможно смогли бы сделать это наиболее правильно оптимально (на winapi например).
А вот насчет того необходимо это или нет, я твердо убежден что ДА, необходимо. Кучи файлов есть у всех, а инструментов систематизации поди поищи.


Название: Re: QFileDialog::getSaveFileName
Отправлено: andrew.k от Ноябрь 25, 2011, 16:04
почему это описание не внести в имя файла?
:o В имя файла? Собственно ограничения на имя файла не позволяют это сделать.
Так зачем туда поэму писать? Твой диалог не спасет от помойки.
Я когда-то давно, тоже хотел к каждой программе и файлу описание написать. Тотал коммандер позволяет это делать.
И удобно отображать комментарии к файлам.
В итоге эта идея довольно быстро загнулась. За не надобностью, за ленью. И еще почему, что любого хотябы более менее осмысленного имени файла было достаточно, чтобы вспомнить что за файл.
Тот у кого помойка из файлов наверняка пользуется файловым менеджером и наверняка он тоже поддерживает комментарии.

А по сабжу. При чем тут Qt вообще. Тут надо в winAPI лезть и полностью свой диалог писать и перехватывать стандартный вызов.

Может Qt и не причем. Просто хотел реалиазовать на нем пример работающей проги, для демонстрации людям которые возможно смогли бы сделать это наиболее правильно оптимально (на winapi например).
А вот насчет того необходимо это или нет, я твердо убежден что ДА, необходимо. Кучи файлов есть у всех, а инструментов систематизации поди поищи.
Интересный подход)