crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> Обработка нажатия клавиши PrintScreen
Bartimeus33nt10
  опции профиля:
сообщение 18.8.2011, 12:41
Сообщение #11


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 18.8.2011, 8:11) *
Цитата(Bartimeus33nt10 @ 16.8.2011, 23:22) *
Но нажатие PrintScreen она не хочет перехватывать ни в какую.
а в libqxt такая кнопка вообще есть?


хм, в каком плане? Я воспользовался QxtGlobalShortcut оттуда.

QxtGlobalShortcut hotkeyHandle;

hotkeyHandle.setShortcut(Qt::Key_Print);
hotkeyHandle.setEnabled(true);
connect(&hotkeyHandle, SIGNAL(activated()), this, SLOT(hotkeyPressed()) );



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.8.2011, 13:48
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Bartimeus33nt10 @ 18.8.2011, 15:41) *
QxtGlobalShortcut hotkeyHandle;

hotkeyHandle.setShortcut(Qt::Key_Print);
hotkeyHandle.setEnabled(true);
connect(&hotkeyHandle, SIGNAL(activated()), this, SLOT(hotkeyPressed()) );
в этом коде hotkeyHandle временный (локальный) объект, он умрёт по выходу из функции.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Bartimeus33nt10
  опции профиля:
сообщение 18.8.2011, 14:55
Сообщение #13


Студент
*

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

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




Репутация:   0  


туда передается указатель на этот объект, так что ты тут ошибаешься.
но дело не в нем.


Точнее адрес передается
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 19.8.2011, 13:00
Сообщение #14


Активный участник
***

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

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




Репутация:   6  


Цитата(Bartimeus33nt10 @ 18.8.2011, 17:55) *
Точнее адрес передается


Он как раз не ошибается. То что Вы написали, это вполне себе вероятный выстрел в ногу. Что будет выведено в результате такой программы и всегда ли вывод будет таким, каким вы ожидаете:
int* returnFive(){
    int a(5);
    return &a;
}
int main(int argc, char *argv[]){
    qDebug() << *returnFive();
}

Это этюд относительно простых переменных.

В случае с объектами же, думаю что будет вызван деструктор объекта и сигнал издавать будет просто некому.

Сообщение отредактировал silver47 - 19.8.2011, 13:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Bartimeus33nt10
  опции профиля:
сообщение 21.8.2011, 21:11
Сообщение #15


Студент
*

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

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




Репутация:   0  


Согласен, после выхода из функции по адресу переменной хранящей пятерку будет мусор.
Но, в моем случае ситуация совершенно другая. Тут идет передача параметров функции по ссылке.
Посмотрите нижеприведенный код.


#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;
}


Сам можешь убедится, что деструктор не будет вызываться при выходе из testFunction.

А по теме у кого нибудь есть идеи?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Bartimeus33nt10
  опции профиля:
сообщение 23.8.2011, 16:00
Сообщение #16


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 18.8.2011, 13:48) *
Цитата(Bartimeus33nt10 @ 18.8.2011, 15:41) *
QxtGlobalShortcut hotkeyHandle;

hotkeyHandle.setShortcut(Qt::Key_Print);
hotkeyHandle.setEnabled(true);
connect(&hotkeyHandle, SIGNAL(activated()), this, SLOT(hotkeyPressed()) );
в этом коде hotkeyHandle временный (локальный) объект, он умрёт по выходу из функции.


А, я понял, что вы имели ввиду. Нет, такого у меня не будет, потому что этот hotkeyHandle является членом класса.
Каюсь, не очень корректно привел кусок кода

Но не суть важно. Важно, что не работает перехват именно кнопки принтскрина. Если поставить любую другую клавишу - все работает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.8.2011, 19:54
Сообщение #17


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Bartimeus33nt10, не может ли быть такой ситуации: виндовоз не посылает соответствующего уведомления приложениям, считая эту кнопку "своей" ?
Ведь в виндах <PrintScreen> и <Alt>+<PrintScreen> делают снимок экрана (окна) и помещают растр в буфер обмена.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Bartimeus33nt10
  опции профиля:
сообщение 23.8.2011, 20:02
Сообщение #18


Студент
*

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

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




Репутация:   0  


Litkevich Yuriy
Воот, хорошо. Да, это и была первая у меня мысль. Вопрос в том, что это как то надо обойти. Или выдрать изображение из буфера. Но я не знаю как.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Bartimeus33nt10
  опции профиля:
сообщение 3.9.2011, 19:06
Сообщение #19


Студент
*

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

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




Репутация:   0  


Отлично, на форуме толпа народа, но ни у кого даже мыслей по этому поводу нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 3.9.2011, 19:45
Сообщение #20


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


В Screenshot Example есть пример как забрать скрин экрана.

PS: если верить гуглу, кнопку PrintScreen перехватить в Qt нельзя. То есть нужно средствами системы делать скрин, а потом его забирать.
PSS: все проги что я видел, стартуют по нажатию PrintScreen - самый простой способ.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.12.2024, 11:30