Название: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: billy4685 от Август 20, 2018, 16:41 Здравствуйте, господа форумчане.
Пишу приложение ScreenShot экрана. В ОС Windows это выглядит так: Код: void screenShot() с бегущими процентами. Но пока не могу понять как это реализовать. Разве что написать свой класс c QPixmap-а с измененным методом save. Может кто уже реализовывал подобное? Буду рад стоящим идеям. Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: Пантер от Август 20, 2018, 16:47 Тебе придется самому реализовывать сохранение.
Может, ну его нафиг прогрессбар? Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: billy4685 от Август 20, 2018, 16:53 Да я уже тоже над этим задумываюсь. ;D
Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: RedDog от Август 20, 2018, 20:25 Даже на самую медленную флешку скриншот запишется настолько быстро, что прогрессбар не успеет появиться.
Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: Igors от Август 21, 2018, 02:38 Запустить save в др нитке, а в главной по таймеру обновлять прогресс. Процентов конечно не получить, но индикатор будет бегать туда-сюда (если уж "так надо" - необходимость сильно надумана)
Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: demal от Август 21, 2018, 10:54 Тогда уж проще просто прогресс бар с нулями в аргументах поставить и он будет бегать туда-сюда
Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: deMax от Август 21, 2018, 11:02 Даже на самую медленную флешку скриншот запишется настолько быстро, что прогрессбар не успеет появиться. С 8 мониторов ultrahd на которых нарисованны котики недающие пожать png в пару киллобайт? на глючную флешку 1 Мб/сек?Сохраните в память, а потом с прогрессбаром на диск. (Из документации bool QPixmap::save(QIODevice *device, const char *format = nullptr, int quality = -1) const ) Код: QPixmap pixmap; А потом с прогрессбаром на диск, и желательно расчитать оптимальный размер блока. Хотя по правде говоря прогресс бар даже не появиться, оптимальнее показать сообщние "Сохраняется" которое тут же будет заменяно "Сохранено" и скрыто через 5 секунд. Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: deMax от Август 21, 2018, 11:07 Я делал сохранение в память, но мне это для кэша нужно было. А вам прогресс бар для данной задачи совершенно не нужен. ИМХО, как правило меньше 5 секунд прогресс бар смысла не имеет.
Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: billy4685 от Август 21, 2018, 13:01 Если изображение сохранять на флешку с максимальным качеством, то оно сохраняется довольно таки медленно.
Если же как я указал в примере с малым качеством(40), то сохранит моментально. Я просто планировал сохранять в наилучшем качестве. Спасибо всем за ответ. Учту все подсказки. Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: deMax от Август 21, 2018, 13:23 Если изображение сохранять на флешку с максимальным качеством, то оно сохраняется довольно таки медленно. Сохраняется оно довольно быстро, просто флешка слишком тормозная(на фоне остальных типов памяти).Если же как я указал в примере с малым качеством(40), то сохранит моментально. Ну да, если в буфер флешки влезет картинка, то "сохранено" будет мгновенно(только если флешку выдрать или свет рубануть, там её не будет).В идеале, сделайте сохранение в другом потоке(Сохранение в память и прогресс бар имхо лишние), прогресс бар на сохранение скриншота в вызывает улыбку. Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: billy4685 от Август 21, 2018, 14:38 deMax, благодарю за совет. Так и сделаю.
Название: Re: Как отобразить процесс сохранения QPixmap изображения в файл? Отправлено: Fregloin от Сентябрь 05, 2018, 11:43 QProgressDialog вам в помощь
|