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
QTimer(3qt)															       QTimer(3qt)

NAME
QTimer - Timer signals and single-shot timers SYNOPSIS
#include <qtimer.h> Inherits QObject. Public Members QTimer ( QObject * parent = 0, const char * name = 0 ) ~QTimer () bool isActive () const int start ( int msec, bool sshot = FALSE ) void changeInterval ( int msec ) void stop () int timerId () const Signals void timeout () Static Public Members void singleShot ( int msec, QObject * receiver, const char * member ) DESCRIPTION
The QTimer class provides timer signals and single-shot timers. It uses timer events internally to provide a more versatile timer. QTimer is very easy to use: create a QTimer, call start() to start it and connect its timeout() to the appropriate slots. When the time is up it will emit the timeout() signal. Note that a QTimer object is destroyed automatically when its parent object is destroyed. Example: QTimer *timer = new QTimer( myObject ); connect( timer, SIGNAL(timeout()), myObject, SLOT(timerDone()) ); timer->start( 2000, TRUE ); // 2 seconds single-shot timer You can also use the static singleShot() function to create a single shot timer. As a special case, a QTimer with timeout 0 times out as soon as all the events in the window system's event queue have been processed. This can be used to do heavy work while providing a snappy user interface: QTimer *t = new QTimer( myObject ); connect( t, SIGNAL(timeout()), SLOT(processOneThing()) ); t->start( 0, FALSE ); myObject->processOneThing() will be called repeatedly and should return quickly (typically after processing one data item) so that Qt can deliver events to widgets and stop the timer as soon as it has done all its work. This is the traditional way of implementing heavy work in GUI applications; multi-threading is now becoming available on more and more platforms, and we expect that null events will eventually be replaced by threading. Note that QTimer's accuracy depends on the underlying operating system and hardware. Most platforms support an accuracy of 20ms; some provide more. If Qt is unable to deliver the requested number of timer clicks, it will silently discard some. An alternative to using QTimer is to call QObject::startTimer() for your object and reimplement the QObject::timerEvent() event handler in your class (which must, of course, inherit QObject). The disadvantage is that timerEvent() does not support such high-level features as single-shot timers or signals. Some operating systems limit the number of timers that may be used; Qt tries to work around these limitations. See also Event Classes and Time and Date. MEMBER FUNCTION DOCUMENTATION
QTimer::QTimer ( QObject * parent = 0, const char * name = 0 ) Constructs a timer called name, with the parent parent. Note that the parent object's destructor will destroy this timer object. QTimer::~QTimer () Destroys the timer. void QTimer::changeInterval ( int msec ) Changes the timeout interval to msec milliseconds. If the timer signal is pending, it will be stopped and restarted; otherwise it will be started. See also start() and isActive(). bool QTimer::isActive () const Returns TRUE if the timer is running (pending); otherwise returns FALSE. Example: t11/cannon.cpp. void QTimer::singleShot ( int msec, QObject * receiver, const char * member ) [static] This static function calls a slot after a given time interval. It is very convenient to use this function because you do not need to bother with a timerEvent or to create a local QTimer object. Example: #include <qapplication.h> #include <qtimer.h> int main( int argc, char **argv ) { QApplication a( argc, argv ); QTimer::singleShot( 10*60*1000, &a, SLOT(quit()) ); ... // create and show your widgets return a.exec(); } This sample program automatically terminates after 10 minutes (i.e. 600000 milliseconds). The receiver is the receiving object and the member is the slot. The time interval is msec. int QTimer::start ( int msec, bool sshot = FALSE ) Starts the timer with a msec milliseconds timeout, and returns the ID of the timer, or zero when starting the timer failed. If sshot is TRUE, the timer will be activated only once; otherwise it will continue until it is stopped. Any pending timer will be stopped. See also singleShot(), stop(), changeInterval(), and isActive(). Examples: void QTimer::stop () Stops the timer. See also start(). Examples: void QTimer::timeout () [signal] This signal is emitted when the timer is activated. Examples: int QTimer::timerId () const Returns the ID of the timer if the timer is running; otherwise returns -1. SEE ALSO
http://doc.trolltech.com/qtimer.html http://www.trolltech.com/faq/tech.html COPYRIGHT
Copyright 1992-2007 Trolltech ASA, 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 (qtimer.3qt) and the Qt version (3.3.8). Trolltech AS 2 February 2007 QTimer(3qt)
All times are GMT -4. The time now is 10:28 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy