Всем добрый день!
Написал программу, делающую скриншоты. В процессе возник вопрос: как обработать нажатие клавиши PrintScreen.
Сразу оговорю,что void keyPressEvent(QKeyEvent *event) ее не перехватывает.
Про сигналы и слоты я в курсе, вот только не пойму как они в данной ситуации могут помочь. Можешь немного поподробнее?
Извиняюсь, не правильно понял вопрос.
Проще прогу свою запускать по нажатию PrintScreen.
Проще? Я бы не сказал.
Что, неужели никто не сталкивался с перехватом этой клавиши?
а перехват то случаем не глобальный нужен?
Глобальный, но я уже подрубил в своей программе библиотеку libqxt.
Все работает, если назначить другую клавишу.
Но нажатие PrintScreen она не хочет перехватывать ни в какую.
да ладно, что НИКТО тут не знает как решить эту проблему?
QxtGlobalShortcut hotkeyHandle;
hotkeyHandle.setShortcut(Qt::Key_Print);
hotkeyHandle.setEnabled(true);
connect(&hotkeyHandle, SIGNAL(activated()), this, SLOT(hotkeyPressed()) );
туда передается указатель на этот объект, так что ты тут ошибаешься.
но дело не в нем.
Точнее адрес передается
int* returnFive(){
int a(5);
return &a;
}
int main(int argc, char *argv[]){
qDebug() << *returnFive();
}
Согласен, после выхода из функции по адресу переменной хранящей пятерку будет мусор.
Но, в моем случае ситуация совершенно другая. Тут идет передача параметров функции по ссылке.
Посмотрите нижеприведенный код.
#include <iostream>
#include <conio.h>
using namespace std;
class Test
{
public:
Test(){cout << "Create" << endl;}
~Test(){cout << "Destroy" << endl;}
private:
};
void testFunction(Test *value)
{
}
int main()
{
Test A;
testFunction(&A);
return 0;
}
Bartimeus33nt10, не может ли быть такой ситуации: виндовоз не посылает соответствующего уведомления приложениям, считая эту кнопку "своей" ?
Ведь в виндах <PrintScreen> и <Alt>+<PrintScreen> делают снимок экрана (окна) и помещают растр в буфер обмена.
Litkevich Yuriy
Воот, хорошо. Да, это и была первая у меня мысль. Вопрос в том, что это как то надо обойти. Или выдрать изображение из буфера. Но я не знаю как.
Отлично, на форуме толпа народа, но ни у кого даже мыслей по этому поводу нет.
В Screenshot Example есть пример как забрать скрин экрана.
PS: если верить гуглу, кнопку PrintScreen перехватить в Qt нельзя. То есть нужно средствами системы делать скрин, а потом его забирать.
PSS: все проги что я видел, стартуют по нажатию PrintScreen - самый простой способ.
В Screenshot Example этого нет.
А как запустить программу при нажатии клавиши? Там же опять будет обработка нажатия, не?
Сам запуск делается средствами самой ОС.
ясно, то есть тоже свои заморочки... ладно, пожалуй я оставлю это до поры до времени, но если появятся мысли у кого то, пишите.
всем спасибо за помощь
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)