Sponsored Content
Full Discussion: read position mouse cursor
Special Forums UNIX and Linux Applications read position mouse cursor Post 302254556 by daggilli on Tuesday 4th of November 2008 05:27:59 PM
Old 11-04-2008
Java

This is the complete code for a Qt application I threw together in about ten minutes (called crosshair) which displays the current mouse coordinates in a window. You might be able to pull enough out of it to be useful. This is Qt 3.1, but Qt 4 is not a great deal different. You will need the Qt development libraries, not just the runtimes. The code comprises two files, crosshair.h and crosshair.cpp.


crosshair.h:

Code:
#ifndef CROSSHAIR_H
#define CROSSHAIR_H
#include <qwidget.h>
#include <qstring.h>
#include <qlabel.h>
#include <qevent.h>

class Crosshair : public QLabel
{
Q_OBJECT

public:
    Crosshair(QWidget *parent=0);

protected:
    void mousePressEvent(QMouseEvent *);

private:
    QTimer         *timer;

private slots:
    void timerfire();
};

#endif

crosshair.cpp:

Code:
#include <qapplication.h>
#include <qpushbutton.h>
#include <qtimer.h>
#include <qcursor.h>
#include <iostream>
#include "crosshair.h"

using namespace std;

int main(int argc,char **argv)
{
    QApplication a(argc,argv);

    Crosshair mousepos;

    a.setMainWidget(&mousepos);
    mousepos.show();
    return a.exec();
}

Crosshair::Crosshair(QWidget *parent) : QLabel(parent)
{
    setIndent(20);
    resize(100,30);
    move(1200,200);
    setText("0,0");
    timer=new QTimer(this);
    connect(timer,SIGNAL(timeout()),this,SLOT(timerfire()));
    timer->start(50,false);
}

void Crosshair::mousePressEvent(QMouseEvent *)
{
    qApp->quit();
}

void Crosshair::timerfire()
{
    QPoint p=QCursor::pos();
    this->setText(QString().sprintf("%d,%d",p.x(),p.y()));
}

To build this, put both files in a directory called crosshair. cd to that directory and type
Code:
qmake -project
qmake
make

This does nothing more complex than inherit from a QLabel, set a timer to run 20x a second, grab the current cursor coordinates and write them into the label's text. Clicking in the window closes it. I use it for fixing up alignment bugs in JavaScript when I'm laying out objects.

You could open a file in the Crosshair class's constructor to store your data, and use gettimeofday(2) to get a timestamp. Nothing says Qt has to run in GUI mode (you can tell it explicitly not to in the QApplication constructor).

Qt from Trolltech: http://doc.trolltech.com
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Get the cursor position

Hello, Is there a way to get the current cursor position? I know "tput sc" saves it. Is there a way to find out the value saved? Thanks. (0 Replies)
Discussion started by: bestbuyernc
0 Replies

2. Programming

Cursor Global Position

Hello all, How can i get the global position of the cursor? (i'm using c language, and suse 10.1 linux) Thanks. (3 Replies)
Discussion started by: boogy
3 Replies

3. HP-UX

Command to know the terminal cursor position

Dear all, How can i get the current cursor position..is thr any command to find the same? Thanks in Advance Aneesh (3 Replies)
Discussion started by: aneesha
3 Replies

4. Programming

get terminal width and cursor position

I want to get the screen width and cursor positions. When I used curses, all the screen content was cleared. So Can I use curses to get the screen size without clearing anything in the window? Or is there any other alternative??? I can use only C or C++. (0 Replies)
Discussion started by: Sreejesh.S
0 Replies

5. UNIX for Dummies Questions & Answers

Vi editor : Knowing the current cursor position

Hi All, In VI editor, to know the line number at any instant we use ctrl+g Similarly, to know the current coulmn number what shall we use?? If not direct key controls like ctrl+g, Is there any comands that could be executed in colon or ex mode of VI to know the current column position???... (1 Reply)
Discussion started by: ramkrix
1 Replies

6. UNIX for Dummies Questions & Answers

Cursor position

Is there a way of finding the current cursor position (line & column) within AIX (4 Replies)
Discussion started by: gefa
4 Replies

7. Shell Programming and Scripting

ksh - moving cursor position

hi all, am trying to modify a ksh script to group server names together depending on the cluster they sit in. currently the script does a find . -name '*.pid' to find all running servers and prints out their pids and names. current output looks something like this : serverA ... (1 Reply)
Discussion started by: cesarNZ
1 Replies

8. Shell Programming and Scripting

Getting the cursor position

I need to get the cursor position, and put it inside a variable. Problem is, i don't have the tput command, or ncurses. Apparently I was supposed to try the following: echo -e '\E But I don't get a value or anything. Please help. (3 Replies)
Discussion started by: tinman47
3 Replies

9. Shell Programming and Scripting

Holding cursor position on one line

Hi there. It's easier to explain this with a pseudo code, I hope this makes sense: var1=hello echo $var1 some kind of loop echo loop counter done How do I hold the cursor position immediately behind the last output so I'd get something like: hello123456789 DOS used to use ","... (5 Replies)
Discussion started by: MuntyScrunt
5 Replies

10. Shell Programming and Scripting

Control cursor position also at bottom of window

I have a slight problem controlling the cursor position in a Bash terminal window. I have a function ask a question and then wait for an answer which is either 'y' or 'n' or a carriage return. Whenever the user enters anything else it just erases the answer and waits for the next one. However, the... (23 Replies)
Discussion started by: Ralph
23 Replies
QMouseEvent(3qt)														  QMouseEvent(3qt)

NAME
QMouseEvent - Parameters that describe a mouse event SYNOPSIS
#include <qevent.h> Inherits QEvent. Public Members QMouseEvent ( Type type, const QPoint & pos, int button, int state ) QMouseEvent ( Type type, const QPoint & pos, const QPoint & globalPos, int button, int state ) const QPoint & pos () const const QPoint & globalPos () const int x () const int y () const int globalX () const int globalY () const ButtonState button () const ButtonState state () const ButtonState stateAfter () const bool isAccepted () const void accept () void ignore () DESCRIPTION
The QMouseEvent class contains parameters that describe a mouse event. Mouse events occur when a mouse button is pressed or released inside a widget or when the mouse cursor is moved. Mouse move events will occur only when a mouse button is pressed down, unless mouse tracking has been enabled with QWidget::setMouseTracking(). Qt automatically grabs the mouse when a mouse button is pressed inside a widget; the widget will continue to receive mouse events until the last mouse button is released. A mouse event contains a special accept flag that indicates whether the receiver wants the event. You should call QMouseEvent::ignore() if the mouse event is not handled by your widget. A mouse event is propagated up the parent widget chain until a widget accepts it with QMouseEvent::accept() or an event filter consumes it. The functions pos(), x() and y() give the cursor position relative to the widget that receives the mouse event. If you move the widget as a result of the mouse event, use the global position returned by globalPos() to avoid a shaking motion. The QWidget::setEnabled() function can be used to enable or disable mouse and keyboard events for a widget. The event handlers QWidget::mousePressEvent(), QWidget::mouseReleaseEvent(), QWidget::mouseDoubleClickEvent() and QWidget::mouseMoveEvent() receive mouse events. See also QWidget::mouseTracking, QWidget::grabMouse(), QCursor::pos(), and Event Classes. MEMBER FUNCTION DOCUMENTATION
QMouseEvent::QMouseEvent ( Type type, const QPoint & pos, int button, int state ) Constructs a mouse event object. The type parameter must be one of QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick or QEvent::MouseMove. The pos parameter specifies the position relative to the receiving widget. button specifies the button that caused the event, which should be Qt::NoButton(0), if type is MouseMove. state is the ButtonState at the time of the event. The globalPos() is initialized to QCursor::pos(), which may not be appropriate. Use the other constructor to specify the global position explicitly. QMouseEvent::QMouseEvent ( Type type, const QPoint & pos, const QPoint & globalPos, int button, int state ) Constructs a mouse event object. The type parameter must be QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick or QEvent::MouseMove. The pos parameter specifies the position relative to the receiving widget. globalPos is the position in absolute coordinates. button specifies the button that caused the event, which should be Qt::NoButton(0), if type is MouseMove. state is the ButtonState at the time of the event. void QMouseEvent::accept () Sets the accept flag of the mouse event object. Setting the accept parameter indicates that the receiver of the event wants the mouse event. Unwanted mouse events are sent to the parent widget. The accept flag is set by default. See also ignore(). ButtonState QMouseEvent::button () const Returns the button that caused the event. Possible return values are LeftButton, RightButton, MidButton and NoButton. Note that the returned value is always NoButton for mouse move events. See also state() and Qt::ButtonState. Examples: const QPoint &; QMouseEvent::globalPos () const Returns the global position of the mouse pointer at the time of the event. This is important on asynchronous window systems like X11. Whenever you move your widgets around in response to mouse events, globalPos() may differ a lot from the current pointer position QCursor::pos(), and from QWidget::mapToGlobal( pos() ). See also globalX() and globalY(). Example: aclock/aclock.cpp. int QMouseEvent::globalX () const Returns the global x-position of the mouse pointer at the time of the event. See also globalY() and globalPos(). int QMouseEvent::globalY () const Returns the global y-position of the mouse pointer at the time of the event. See also globalX() and globalPos(). void QMouseEvent::ignore () Clears the accept flag parameter of the mouse event object. Clearing the accept parameter indicates that the event receiver does not want the mouse event. Unwanted mouse events are sent to the parent widget. The accept flag is set by default. See also accept(). bool QMouseEvent::isAccepted () const Returns TRUE if the receiver of the event wants to keep the key; otherwise returns FALSE. const QPoint &; QMouseEvent::pos () const Returns the position of the mouse pointer relative to the widget that received the event. If you move the widget as a result of the mouse event, use the global position returned by globalPos() to avoid a shaking motion. See also x(), y(), and globalPos(). Examples: ButtonState QMouseEvent::state () const Returns the button state (a combination of mouse buttons and keyboard modifiers), i.e. what buttons and keys were being pressed immediately before the event was generated. Note that this means that for QEvent::MouseButtonPress and QEvent::MouseButtonDblClick, the flag for the button() itself will not be set in the state, whereas for QEvent::MouseButtonRelease it will. This value is mainly interesting for QEvent::MouseMove; for the other cases, button() is more useful. The returned value is LeftButton, RightButton, MidButton, ShiftButton, ControlButton and AltButton OR'ed together. See also button(), stateAfter(), and Qt::ButtonState. Examples: ButtonState QMouseEvent::stateAfter () const Returns the state of buttons after the event. See also state() and Qt::ButtonState. int QMouseEvent::x () const Returns the x-position of the mouse pointer, relative to the widget that received the event. See also y() and pos(). Example: showimg/showimg.cpp. int QMouseEvent::y () const Returns the y-position of the mouse pointer, relative to the widget that received the event. See also x() and pos(). Example: showimg/showimg.cpp. SEE ALSO
http://doc.trolltech.com/qmouseevent.html http://www.trolltech.com/faq/tech.html COPYRIGHT
Copyright 1992-2001 Trolltech AS, http://www.trolltech.com. See the license file included in the distribution for a complete license statement. AUTHOR
Generated automatically from the source code. BUGS
If you find a bug in Qt, please report it as described in http://doc.trolltech.com/bughowto.html. Good bug reports help us to help you. Thank you. The definitive Qt documentation is provided in HTML format; it is located at $QTDIR/doc/html and can be read using Qt Assistant or with a web browser. This man page is provided as a convenience for those users who prefer man pages, although this format is not officially supported by Trolltech. If you find errors in this manual page, please report them to qt-bugs@trolltech.com. Please include the name of the manual page (qmouseevent.3qt) and the Qt version (3.1.1). Trolltech AS 9 December 2002 QMouseEvent(3qt)
All times are GMT -4. The time now is 05:36 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy