Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Luchnik22 от Апрель 02, 2011, 18:26



Название: как сделать Windows Ловушку для мышки?
Отправлено: Luchnik22 от Апрель 02, 2011, 18:26
Я хочу отслеживать курсор за пределами виджета, setMouseTracking(true); мне не нужно... в реальном времени и постоянно, как это сделать?


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: lesav от Апрель 02, 2011, 19:04
смотри:
installEvent
eventFilter


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: Alex Custov от Апрель 02, 2011, 22:54
смотри:
installEvent
eventFilter

которые работают только в пределах виджета или приложения.


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: madRoger от Апрель 03, 2011, 01:30
Средствами Qt решить данный вопрос не получится. Нужно использовать API системы.


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: ernie от Апрель 03, 2011, 08:13
по таймеру чекать cursorPos(),больше нет вариантов


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: Luchnik22 от Апрель 03, 2011, 09:39
по таймеру чекать cursorPos(),больше нет вариантов
по подробнее, ибо придётся учить Win API, чего я особо не хочу


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: Kolobok от Апрель 03, 2011, 10:33
Посмотри %Qt%/tools/pixeltool


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: Luchnik22 от Апрель 03, 2011, 10:44
Посмотри %Qt%/tools/pixeltool
Огромное спасибо  :D


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: Luchnik22 от Апрель 03, 2011, 11:41
Если есть ещё идеи добавляйте


Название: Re: как сделать Windows Ловушку для мышки?
Отправлено: Luchnik22 от Апрель 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 примерно также работает