2015-12-08 8 views
1

спасибо за проверку моего вопроса!Взятие скриншотов с помощью Qt C++ на Android

В настоящее время я работаю над проектом с использованием Qt C++, который разработан как многоплатформенный. Я немного новичок в этом, поэтому меня попросили настроить возможность делать скриншоты из структуры меню, и у меня возникают проблемы с версией Android-приложения для Android.

Как краткий обзор, это немного программного обеспечения, которое отправляет содержимое экрана главного компьютера в наше приложение, и я смог сделать скриншоты в версии для Windows просто отлично, используя QScreen и QPixmap, например :

overlaywindow.cpp

{ 
    QPixmap screenSnapData = screenGrab->currentBackground(); 
} 

screenGrabber.cpp

{ 
    QScreen *screen = QGuiApplication::primaryScreen(); 
    return screen->grabWindow(QApplication::desktop()->winId()); 
} 

к сожалению, Android, кажется, отказаться от QScreen, и с большинством предложений от прошлого Поиски Google, предлагающие теперь устаревший QPixmap :: grab(), я немного застрял.

Какая удача у меня есть есть в коде для самого меню и QWidget, но это, конечно, не без проблем!

QFile doubleCheckFile("/storage/emulated/0/Pictures/Testing/checking.png"); 
doubleCheckFile.open(QIODevice::ReadWrite); 
QPixmap checkingPixmap = QWidget::grab(); 
checkingPixmap.save(&doubleCheckFile); 
doubleCheckFile.close(); 

Этот код делает снимок экрана, но в настоящее время реализованы только на пуговицах, а не на весь экран. Я также взял «скриншот» в просто белой коробке с размерами экрана с помощью:

QDesktopWidget dw; 
QWidget *screen=dw.screen();   
QPixmap checkingPixmap = screen->grab(); 

ли кто-нибудь знает, есть ли альтернатива использованию QScreen сделать скриншот в Android, или есть ли конкретный способ заставить его работать по сравнению с Windows? Или QWidget будет правильным путем? Любая помощь очень ценится!

ответ

0

, как я могу читать в Qt doc: В вашем screenGrabber.cpp:

QScreen *screen = QGuiApplication::primaryScreen(); 
return screen->grabWindow(QApplication::desktop()->winId()); 

заменить:

QScreen *screen = QGuiApplication::primaryScreen(); 
return screen->grabWindow(0); // as 0 is the id of main screen 
+0

К сожалению, это не работает для Android версии, как это до сих пор используют QScreen, как показано со следующей ошибкой компилятора: не смог преобразовать 'QScreen :: grabWindow (WId, int, int, int, int) (0u, 0, 0, -1, -1)' из 'QPixmap' в 'QScreen' return screen-> grabWindow (0); – irrevilent

Смежные вопросы