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

NAME
QLabel - Text or image display SYNOPSIS
#include <qlabel.h> Inherits QFrame. Public Members QLabel ( QWidget * parent, const char * name = 0, WFlags f = 0 ) QLabel ( const QString & text, QWidget * parent, const char * name = 0, WFlags f = 0 ) QLabel ( QWidget * buddy, const QString & text, QWidget * parent, const char * name = 0, WFlags f = 0 ) ~QLabel () QString text () const QPixmap * pixmap () const QPicture * picture () const QMovie * movie () const TextFormat textFormat () const void setTextFormat ( TextFormat ) int alignment () const virtual void setAlignment ( int ) int indent () const void setIndent ( int ) bool autoResize () const (obsolete) virtual void setAutoResize ( bool enable ) (obsolete) bool hasScaledContents () const void setScaledContents ( bool ) virtual void setBuddy ( QWidget * buddy ) QWidget * buddy () const virtual void setFont ( const QFont & f ) Public Slots virtual void setText ( const QString & ) virtual void setPixmap ( const QPixmap & ) virtual void setPicture ( const QPicture & picture ) virtual void setMovie ( const QMovie & movie ) virtual void setNum ( int num ) virtual void setNum ( double num ) void clear () Properties Alignment alignment - the alignment of the label's contents BackgroundMode backgroundMode - the label's background mode (read only) int indent - the label's text indent in pixels QPixmap pixmap - the label's pixmap bool scaledContents - whether the label will scale its contents to fill all available space QString text - the label's text TextFormat textFormat - the label's text format Protected Members virtual void drawContents ( QPainter * p ) DESCRIPTION
The QLabel widget provides a text or image display. QLabel is used for displaying text or an image. No user interaction functionality is provided. The visual appearance of the label can be configured in various ways, and it can be used for specifying a focus accelerator key for another widget. A QLabel can contain any of the following content types: <center>.nf </center> When the content is changed using any of these functions, any previous content is cleared. The look of a QLabel can be tuned in several ways. All the settings of QFrame are available for specifying a widget frame. The positioning of the content within the QLabel widget area can be tuned with setAlignment() and setIndent(). For example, this code sets up a sunken panel with a two-line text in the bottom right corner (both lines being flush with the right side of the label): QLabel *label = new QLabel( this ); label->setFrameStyle( QFrame::Panel | QFrame::Sunken ); label->setText( "first line second line" ); label->setAlignment( AlignBottom | AlignRight ); A QLabel is often used as a label for an interactive widget. For this use QLabel provides a useful mechanism for adding an accelerator key (see QAccel) that will set the keyboard focus to the other widget (called the QLabel's "buddy"). For example: QLineEdit* phoneEdit = new QLineEdit( this, "phoneEdit" ); QLabel* phoneLabel = new QLabel( phoneEdit, "&Phone:", this, "phoneLabel" ); In this example, keyboard focus is transferred to the label's buddy (the QLineEdit) when the user presses Alt+P. You can also use the setBuddy() function to accomplish the same thing. [Image Omitted] [Image Omitted] See also QLineEdit, QTextEdit, QPixmap, QMovie, GUI Design Handbook: Label, Basic Widgets, and Text Related Classes. MEMBER FUNCTION DOCUMENTATION
QLabel::QLabel ( QWidget * parent, const char * name = 0, WFlags f = 0 ) Constructs an empty label. The parent, name and widget flag f, arguments are passed to the QFrame constructor. See also alignment, setFrameStyle(), and indent. QLabel::QLabel ( const QString & text, QWidget * parent, const char * name = 0, WFlags f = 0 ) Constructs a label that displays the text, text. The parent, name and widget flag f, arguments are passed to the QFrame constructor. See also text, alignment, setFrameStyle(), and indent. QLabel::QLabel ( QWidget * buddy, const QString & text, QWidget * parent, const char * name = 0, WFlags f = 0 ) Constructs a label that displays the text text. The label has a buddy widget, buddy. If the text contains an underlined letter (a letter preceded by an ampersand, &), and the text is in plain text format, when the user presses Alt+ the underlined letter, focus is passed to the buddy widget. The parent, name and widget flag, f, arguments are passed to the QFrame constructor. See also text, setBuddy(), alignment, setFrameStyle(), and indent. QLabel::~QLabel () Destroys the label. int QLabel::alignment () const Returns the alignment of the label's contents. See the "alignment" property for details. bool QLabel::autoResize () const This function is obsolete. It is provided to keep old source working. We strongly advise against using it in new code. Returns TRUE if auto-resizing is enabled, or FALSE if auto-resizing is disabled. Auto-resizing is disabled by default. See also setAutoResize(). QWidget * QLabel::buddy () const Returns this label's buddy, or 0 if no buddy is currently set. See also setBuddy(). void QLabel::clear () [slot] Clears any label contents. Equivalent to setText( "" ). void QLabel::drawContents ( QPainter * p ) [virtual protected] Draws the label contents using the painter p. Reimplemented from QFrame. bool QLabel::hasScaledContents () const Returns TRUE if the label will scale its contents to fill all available space; otherwise returns FALSE. See the "scaledContents" property for details. int QLabel::indent () const Returns the label's text indent in pixels. See the "indent" property for details. QMovie * QLabel::movie () const Returns a pointer to the label's movie, or 0 if no movie has been set. See also setMovie(). QPicture * QLabel::picture () const Returns the label's picture or 0 if the label doesn't have a picture. QPixmap * QLabel::pixmap () const Returns the label's pixmap. See the "pixmap" property for details. void QLabel::setAlignment ( int ) [virtual] Sets the alignment of the label's contents. See the "alignment" property for details. void QLabel::setAutoResize ( bool enable ) [virtual] This function is obsolete. It is provided to keep old source working. We strongly advise against using it in new code. Enables auto-resizing if enable is TRUE, or disables it if enable is FALSE. When auto-resizing is enabled the label will resize itself to fit the contents whenever the contents change. The top-left corner is not moved. This is useful for QLabel widgets that are not managed by a QLayout (e.g., top-level widgets). Auto-resizing is disabled by default. See also autoResize(), adjustSize(), and sizeHint. void QLabel::setBuddy ( QWidget * buddy ) [virtual] Sets this label's buddy to buddy. When the user presses the accelerator key indicated by this label, the keyboard focus is transferred to the label's buddy widget. The buddy mechanism is only available for QLabels that contain plain text in which one letter is prefixed with an ampersand, &. This letter is set as the accelerator key. The letter is displayed underlined, and the '&' is not displayed (i.e. the ShowPrefix alignment flag is turned on; see setAlignment()). In a dialog, you might create two data entry widgets and a label for each, and set up the geometry layout so each label is just to the left of its data entry widget (its "buddy"), for example: QLineEdit *nameEd = new QLineEdit( this ); QLabel *nameLb = new QLabel( "&Name:", this ); nameLb->setBuddy( nameEd ); QLineEdit *phoneEd = new QLineEdit( this ); QLabel *phoneLb = new QLabel( "&Phone:", this ); phoneLb->setBuddy( phoneEd ); // ( layout setup not shown ) With the code above, the focus jumps to the Name field when the user presses Alt+N, and to the Phone field when the user presses Alt+P. To unset a previously set buddy, call this function with buddy set to 0. See also buddy(), text, QAccel, and alignment. Examples: void QLabel::setFont ( const QFont & f ) [virtual] Sets the font used on the QLabel to font f. Example: menu/menu.cpp. Reimplemented from QWidget. void QLabel::setIndent ( int ) Sets the label's text indent in pixels. See the "indent" property for details. void QLabel::setMovie ( const QMovie & movie ) [virtual slot] Sets the label contents to movie. Any previous content is cleared. The buddy accelerator, if any, is disabled. The label resizes itself if auto-resizing is enabled. See also movie() and setBuddy(). void QLabel::setNum ( int num ) [virtual slot] Sets the label contents to plain text containing the textual representation of integer num. Any previous content is cleared. Does nothing if the integer's string representation is the same as the current contents of the label. The buddy accelerator, if any, is disabled. The label resizes itself if auto-resizing is enabled. See also text, QString::setNum(), and setBuddy(). void QLabel::setNum ( double num ) [virtual slot] This is an overloaded member function, provided for convenience. It behaves essentially like the above function. Sets the label contents to plain text containing the textual representation of double num. Any previous content is cleared. Does nothing if the double's string representation is the same as the current contents of the label. The buddy accelerator, if any, is disabled. The label resizes itself if auto-resizing is enabled. See also text, QString::setNum(), and setBuddy(). void QLabel::setPicture ( const QPicture & picture ) [virtual slot] Sets the label contents to picture. Any previous content is cleared. The buddy accelerator, if any, is disabled. See also picture() and setBuddy(). void QLabel::setPixmap ( const QPixmap & ) [virtual slot] Sets the label's pixmap. See the "pixmap" property for details. void QLabel::setScaledContents ( bool ) Sets whether the label will scale its contents to fill all available space. See the "scaledContents" property for details. void QLabel::setText ( const QString & ) [virtual slot] Sets the label's text. See the "text" property for details. void QLabel::setTextFormat ( TextFormat ) Sets the label's text format. See the "textFormat" property for details. QString QLabel::text () const Returns the label's text. See the "text" property for details. TextFormat QLabel::textFormat () const Returns the label's text format. See the "textFormat" property for details. Property Documentation Alignment alignment This property holds the alignment of the label's contents. The alignment is a bitwise OR of Qt::AlignmentFlags and Qt::TextFlags values. The ExpandTabs, SingleLine and ShowPrefix flags apply only if the label contains plain text; otherwise they are ignored. The DontClip flag is always ignored. WordBreak applies to both rich text and plain text labels. The BreakAnywhere flag is not supported in QLabel. If the label has a buddy, the ShowPrefix flag is forced to TRUE. The default alignment is AlignAuto | AlignVCenter | ExpandTabs if the label doesn't have a buddy and AlignAuto | AlignVCenter | ExpandTabs | ShowPrefix if the label has a buddy. If the label contains rich text, additionally WordBreak is turned on. See also Qt::AlignmentFlags, setBuddy(), and text. Set this property's value with setAlignment() and get this property's value with alignment(). BackgroundMode backgroundMode This property holds the label's background mode. Get this property with backgroundMode(). See also QWidget::backgroundMode. int indent This property holds the label's text indent in pixels. If a label displays text, the indent applies to the left edge if alignment() is AlignLeft, to the right edge if alignment() is AlignRight, to the top edge if alignment() is AlignTop, and to to the bottom edge if alignment() is AlignBottom. If indent is negative, or if no indent has been set, the label computes the effective indent as follows: If frameWidth() is 0, the effective indent becomes 0. If frameWidth() is greater than 0, the effective indent becomes half the width of the "x" character of the widget's current font(). See also alignment, frameWidth, and font. Set this property's value with setIndent() and get this property's value with indent(). QPixmap pixmap This property holds the label's pixmap. If no pixmap has been set this will return an invalid pixmap. Setting the pixmap clears any previous content, and resizes the label if QLabel::autoResize() is TRUE. The buddy accelerator, if any, is disabled. Set this property's value with setPixmap() and get this property's value with pixmap(). bool scaledContents This property holds whether the label will scale its contents to fill all available space. When enabled and the label shows a pixmap, it will scale the pixmap to fill the available space. This property's default is FALSE. See also scaledContents. Set this property's value with setScaledContents() and get this property's value with hasScaledContents(). QString text This property holds the label's text. If no text has been set this will return an empty string. Setting the text clears any previous content, unless they are the same. The text will be interpreted either as a plain text or as a rich text, depending on the text format setting; see setTextFormat(). The default setting is AutoText, i.e. QLabel will try to auto-detect the format of the text set. If the text is interpreted as a plain text and a buddy has been set, the buddy accelerator key is updated from the new text. The label resizes itself if auto-resizing is enabled. Note that Qlabel is well-suited to display small rich text documents, i.e. those small documents that get their document specific settings (font, text color, link color) from the label's palette and font properties. For large documents, use QTextEdit in read-only mode instead. QTextEdit will flicker less on resize and can also provide a scrollbar when necessary. See also textFormat, setBuddy(), and alignment. Set this property's value with setText() and get this property's value with text(). TextFormat textFormat This property holds the label's text format. See the Qt::TextFormat enum for an explanation of the possible options. The default format is AutoText. See also text. Set this property's value with setTextFormat() and get this property's value with textFormat(). SEE ALSO
http://doc.trolltech.com/qlabel.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 (qlabel.3qt) and the Qt version (3.3.8). Trolltech AS 2 February 2007 QLabel(3qt)
All times are GMT -4. The time now is 06:00 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy