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

NAME
QSplashScreen - Splash screen that can be shown during application startup SYNOPSIS
#include <qsplashscreen.h> Inherits QWidget. Public Members QSplashScreen ( const QPixmap & pixmap = QPixmap ( ), WFlags f = 0 ) virtual ~QSplashScreen () void setPixmap ( const QPixmap & pixmap ) QPixmap * pixmap () const void finish ( QWidget * mainWin ) void repaint () Public Slots void message ( const QString & message, int alignment = AlignLeft, const QColor & color = black ) void clear () Signals void messageChanged ( const QString & message ) Protected Members virtual void drawContents ( QPainter * painter ) DESCRIPTION
The QSplashScreen widget provides a splash screen that can be shown during application startup. A splash screen is a widget that is usually displayed when an application is being started. Splash screens are often used for applications that have long start up times (e.g. database or networking applications that take time to establish connections) to provide the user with feedback that the application is loading. The splash screen appears centered on the screen. It may be useful to add the WStyle_StaysOnTop if you desire to keep above all the windows in the GUI. Some X11 window managers do not support the "stays on top" flag. A solution is to set up a timer that periodically calls raise() on the splash screen to simulate the "stays on top" effect. The most common usage is to show a splash screen before the main widget is displayed on the screen. This is illustrated in the following code snippet. int main( int argc, char **argv ) { QApplication app( argc, argv ); QPixmap pixmap( "splash.png" ); QSplashScreen *splash = new QSplashScreen( pixmap ); splash->show(); QMainWindow *mainWin = new QMainWindow; ... app.setMainWidget( mainWin ); mainWin->show(); splash->finish( mainWin ); delete splash; return app.exec(); } It is sometimes useful to update the splash screen with messages, for example, announcing connections established or modules loaded as the application starts up. QSplashScreen supports this with the message() function. If you wish to do your own drawing you can get a pointer to the pixmap used in the splash screen with pixmap(). Alternatively, you can subclass QSplashScreen and reimplement drawContents(). The user can hide the splash screen by clicking on it with the mouse. Since the splash screen is typically displayed before the event loop has started running, it is necessary to periodically call QApplication::processEvents() to receive the mouse clicks. QPixmap pixmap( "splash.png" ); QSplashScreen *splash = new QSplashScreen( pixmap ); splash->show(); ... // Loading some items splash->message( "Loaded modules" ); qApp->processEvents(); ... // Establishing connections splash->message( "Established connections" ); qApp->processEvents(); See also Miscellaneous Classes. MEMBER FUNCTION DOCUMENTATION
QSplashScreen::QSplashScreen ( const QPixmap & pixmap = QPixmap ( ), WFlags f = 0 ) Construct a splash screen that will display the pixmap. There should be no need to set the widget flags, f, except perhaps WDestructiveClose or WStyle_StaysOnTop. QSplashScreen::~QSplashScreen () [virtual] Destructor. void QSplashScreen::clear () [slot] Removes the message being displayed on the splash screen See also message(). void QSplashScreen::drawContents ( QPainter * painter ) [virtual protected] Draw the contents of the splash screen using painter painter. The default implementation draws the message passed by message(). Reimplement this function if you want to do your own drawing on the splash screen. void QSplashScreen::finish ( QWidget * mainWin ) Makes the splash screen wait until the widget mainWin is displayed before calling close() on itself. void QSplashScreen::message ( const QString & message, int alignment = AlignLeft, const QColor & color = black ) [slot] Draws the message text onto the splash screen with color color and aligns the text according to the flags in alignment. See also Qt::AlignmentFlags and clear(). void QSplashScreen::messageChanged ( const QString & message ) [signal] This signal is emitted when the message on the splash screen changes. message is the new message and is a null-string when the message has been removed. See also message() and clear(). QPixmap * QSplashScreen::pixmap () const Returns the pixmap that is used in the splash screen. The image does not have any of the text drawn by message() calls. void QSplashScreen::repaint () This overrides QWidget::repaint(). It differs from the standard repaint function in that it also calls QApplication::flush() to ensure the updates are displayed, even when there is no event loop present. void QSplashScreen::setPixmap ( const QPixmap & pixmap ) Sets the pixmap that will be used as the splash screen's image to pixmap. SEE ALSO
http://doc.trolltech.com/qsplashscreen.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 (qsplashscreen.3qt) and the Qt version (3.3.8). Trolltech AS 2 February 2007 QSplashScreen(3qt)
All times are GMT -4. The time now is 01:21 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy