crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Скриншот в Линукс
V7T
  опции профиля:
сообщение 11.10.2011, 20:45
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 11.10.2011
Пользователь №: 2939

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




Репутация:   0  


Здравствуйте, уважаемые форумчане!
Сразу скажу c QT и линуксом, до сих пор, дела никогда не имел, да и с плюсами очень мало работал, в основном программировал на шарпе.
Суть такова, нужно написать простенькое приложение клиент-сервер, клиент каждые несколько секунд делает скриншот всей области экрана с последующей отправкой его на сервер. В принципе литературу перелопатил малость "основы программирования в линукс". Приложение пишу консольное. Нашел код в интернете, который делает скрин, и столкнулся с проблемой...

....
#include <qpixmap.h>

int main(int argc, char *argv[])
{
...
QPixmap screenshot = QPixmap::grabWindow(qt_xrootwin());
screenshot.save(QString(getenv("HOME"))+"/screen.png","PNG",100);
return 0;
...
}

... что за метод qt_xrootwin()? При компилировании ругается "error: ‘qt_xscreen’ was not declared in this scope". На просторах инета ни черта не нашел.
И по сему, уважаемые, решил обратиться к вам. Подскажите, может нужно подключить библиотеку какую-нибудь(я копался в СДК QT и видел пример приложения СКРИНШОТ, но мне хотелось бы использовать именно данный, т.к. сразу в таймер загнал этот маленький кусок и все)?
Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
registr
  опции профиля:
сообщение 11.10.2011, 21:55
Сообщение #2


Участник
**

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

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




Репутация:   1  


Похоже, что это какая-то самописная функция.

Qt Assistant:
QPixmap QPixmap::grabWindow ( WId window, int x = 0, int y = 0, int width = -1, int height = -1 )

Creates and returns a pixmap constructed by grabbing the contents of the given window restricted by QRect(x, y, width, height).

The arguments (x, y) specify the offset in the window, whereas (width, height) specify the area to be copied. If width is negative, the function copies everything to the right border of the window. If height is negative, the function copies everything to the bottom of the window.

Ты лучше сам ее допиши.

Т.е. сам вставь нужные значения.

Читаем дальше:
The window system identifier (WId) can be retrieved using the QWidget::winId() function. The rationale for using a window identifier and not a QWidget, is to enable grabbing of windows that are not part of the application, window system frames, and so on.

The grabWindow() function grabs pixels from the screen, not from the window, i.e. if there is another window partially or entirely over the one you grab, you get pixels from the overlying window, too. The mouse cursor is generally not grabbed.

Сообщение отредактировал registr - 11.10.2011, 21:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DOGG
  опции профиля:
сообщение 12.10.2011, 14:13
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

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




Репутация:   0  


qt_xrootwin() - скорее всего это функция получения WId виртуального корневого окна в X Window System.

Ищите как его определить и сможете сами ее дописать (можете вот сдесь посмотреть вот сдесь есть про это).

Сообщение отредактировал DOGG - 12.10.2011, 14:14
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
V7T
  опции профиля:
сообщение 13.10.2011, 10:22
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 11.10.2011
Пользователь №: 2939

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




Репутация:   0  


Спасибо вам.

Как оказалось ни чего сложного не было:
QPixmap screenshot = QPixmap::grabWindow(QApplication::desktop()->winId());
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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