crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QPixmap и сохранение !, Помогите разобраться !
maxvanceffer
  опции профиля:
сообщение 26.10.2009, 15:42
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вообщем проблема такая:
Пишу прогу которая делает скрин рабочего стола и отсылает на сервер. Во общем при сохранение QPixmap подвисает вообще винда (причём подвисание только под виндой, под кубунтой всё нормально). Уже про бывал переносить в отдельный поток на время, скачивал исходники других программ и делают так же как и я.

Структура проги такая : Сначала создаётся главный класс потом этот класс создаёт класс который делает скрин и сохраняет. Главный класс и и класс скриншоты соединены слотами(Если это как то объяснит ситуацию).
А вот код который при выполнение тормозит систему.
        qDebug()<<"Running grabDisplay() function";
        Screen = QPixmap::grabWindow(QApplication::desktop()->winId());
        displayScreenName=savePath+G.currentTime().toString("hh-mm-ss")+".png";
        qDebug()<<"Path to be saved image from shootup"<<displayScreenName;
        if(Screen.save(displayScreenName,"png",60)) emit ScreenIsMaded(); // Вот на этой строчке система капитально подвисает на секунду.
        else emit errorScreen();


Использую Qt 4.6 beta1

Сообщение отредактировал maxvanceffer - 26.10.2009, 15:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.10.2009, 16:31
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


maxvanceffer,
у меня как то была проблема по виндой с "png" помогло использование "PNG". правда не помню какая версия.
ScreenIsMaded() этот сигнал с чем связан и каким типом соединения?

П.С.
подвисание на секудну так заметно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maxvanceffer
  опции профиля:
сообщение 26.10.2009, 17:23
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


В родительском классе есть слот getGrabedImagePath(); он соединён с сигналом ScreenIsMaded();
И подвисание реально ощутимо хоть и длиться примерно секунду. Про бывал на всех виндовозных компах в офисе. Есть это торможение.

Сообщение отредактировал maxvanceffer - 26.10.2009, 17:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.10.2009, 17:38
Сообщение #4


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(maxvanceffer @ 26.10.2009, 17:23) *
В родительском классе есть слот getGrabedImagePath()

очень хорошо, а код этого слота?
и как соединён на прямую или через очередь?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maxvanceffer
  опции профиля:
сообщение 26.10.2009, 17:41
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Родительский класс DialogWindow.
Чайлд класс ScreenShooter;

В родительском классе :
myShooter=new ScreenShooter;
connect(myShooter,SIGNAL(ScreenIsMaded()),this,SLOT(getGrabedImagePath()));


Сообщение отредактировал maxvanceffer - 26.10.2009, 17:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.10.2009, 18:33
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


maxvanceffer,
код слота getGrabedImagePath покажи!
что делает это слот?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maxvanceffer
  опции профиля:
сообщение 26.10.2009, 19:02
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


   if(myUser->settingsGetPopUpShowState()){
         qDebug()<<"In pop up will be this image path "<<myShooter->getDisplayImagePath();
        toolTip->ImageToShow(myShooter->getDisplayImagePath());
    }

    if(myUser->settingsWebCam()){
        myLastScreenWindow->setLastScreenPath(myShooter->getDisplayImagePath());
        myLastScreenWindow->setLastWebScreenPath(myShooter->getWebCameraImagePath());
    }else{
        myLastScreenWindow->setLastScreenPath(myShooter->getDisplayImagePath());
        myLastScreenWindow->setLastWebScreenPath("None");
    }
    grabSendingInfo();
    uploadScreenShot();

Функция grabSendingInfo(); собирает инфу о системе (версия винды, дату, время, имя пользователя)

Сообщение отредактировал maxvanceffer - 26.10.2009, 19:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.10.2009, 19:13
Сообщение #8


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


думаю здесь и нужно искать тормоз.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maxvanceffer
  опции профиля:
сообщение 26.10.2009, 19:17
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Пробывал тут искать.
Каментировал каждую сторчку по очереди. Методом исключения привело именно к QPixmap::save();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rnd
  опции профиля:
сообщение 26.10.2009, 19:22
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 54
Регистрация: 22.7.2009
Пользователь №: 930

Спасибо сказали: 1 раз(а)




Репутация:   0  


Запустите под профайлером
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 12:58