Russian Qt Forum
Сентябрь 28, 2024, 06:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как сделать Windows Ловушку для мышки?  (Прочитано 6127 раз)
Luchnik22
Гость
« : Апрель 02, 2011, 18:26 »

Я хочу отслеживать курсор за пределами виджета, setMouseTracking(true); мне не нужно... в реальном времени и постоянно, как это сделать?
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #1 : Апрель 02, 2011, 19:04 »

смотри:
installEvent
eventFilter
Записан

Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Апрель 02, 2011, 22:54 »

смотри:
installEvent
eventFilter

которые работают только в пределах виджета или приложения.
Записан
madRoger
Гость
« Ответ #3 : Апрель 03, 2011, 01:30 »

Средствами Qt решить данный вопрос не получится. Нужно использовать API системы.
Записан
ernie
Гость
« Ответ #4 : Апрель 03, 2011, 08:13 »

по таймеру чекать cursorPos(),больше нет вариантов
Записан
Luchnik22
Гость
« Ответ #5 : Апрель 03, 2011, 09:39 »

по таймеру чекать cursorPos(),больше нет вариантов
по подробнее, ибо придётся учить Win API, чего я особо не хочу
Записан
Kolobok
Гость
« Ответ #6 : Апрель 03, 2011, 10:33 »

Посмотри %Qt%/tools/pixeltool
Записан
Luchnik22
Гость
« Ответ #7 : Апрель 03, 2011, 10:44 »

Посмотри %Qt%/tools/pixeltool
Огромное спасибо  Веселый
Записан
Luchnik22
Гость
« Ответ #8 : Апрель 03, 2011, 11:41 »

Если есть ещё идеи добавляйте
Записан
Luchnik22
Гость
« Ответ #9 : Апрель 03, 2011, 18:43 »

Исходник
main.cpp
Код:
#include "mousesee.h"
#include <QtGui>

int main(int argc, char** argv)
{
    QApplication app(argc,argv);
    MouseSee mouse;   
    mouse.resize(100,100);
    mouse.show();
    return app.exec();
}
mousesee.h
Код:
#ifndef MOUSESEE_H
#define MOUSESEE_H

#include <QtGui>

class MouseSee : public QLabel
{
    Q_OBJECT
public:
    MouseSee(QWidget *parent = 0);

protected:
    virtual void timerEvent(QTimerEvent *event);
    void Event(QString strX = "", QString strY = "");

private:
    int t_updateID;
};

#endif // MOUSESEE_H
mousesee.cpp
Код:
#include "mousesee.h"


MouseSee::MouseSee(QWidget *parent) :
    QLabel(parent)
{
    setAlignment(Qt::AlignCenter);
    t_updateID = startTimer(30); // запуск таймера
}

void MouseSee::Event(QString strX, QString strY) // Функция отображения курсора
{   
    setText("\n Mouse MoveX = " + strX
            + "\n Mouse MoveY = " + strY);

}

void MouseSee::timerEvent(QTimerEvent *event) // Основа
{
    if (event->timerId() == t_updateID)
    {
        Event(QString::number(cursor().pos().x()),
                  QString::number(cursor().pos().y()));
        // cursor().pos().x() реальное положение курсора
    }
}
по таймеру чекать cursorPos(),больше нет вариантов
я сделал по твоему варианту (реально больше ни как нельзя и не нужно)... программка pixeltool примерно также работает
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.113 секунд. Запросов: 23.