5

As I write on title, I hope to show mouse position like tooltip. To do that, I think that I have to override QCursor, right?

But I don't know the details of QCursor and how to make a new cursorShape.

Is there any example like this?

General Grievance
  • 4,555
  • 31
  • 31
  • 45
Hyun-geun Kim
  • 919
  • 3
  • 22
  • 37
  • 1
    What do you really want to do? Is it showing to the user where his mouse is or just changing the mouse cursor to show a waiting wheel for example? – Uflex Sep 14 '12 at 08:27

1 Answers1

12

Assuming you want a coordinate readout as you move the cursor (like in many graphics or CAD applications), you really do not want to override QCursor.

The most efficient approach depends on what widget will be providing the coordinates, but in most cases the simplest way will be to setMouseTracking(true) for the widget, and override it's mouseMoveEvent(QMouseEvent* event) to display a QToolTip like so:

void MyWidget::mouseMoveEvent(QMouseEvent* event)
{
    QToolTip::showText(event->globalPos(),
                       //  In most scenarios you will have to change these for
                       //  the coordinate system you are working in.
                       QString::number( event->pos().x() ) + ", " +
                       QString::number( event->pos().y() ),
                       this, rect() );
    QWidget::mouseMoveEvent(event);  // Or whatever the base class is.
}

Normally you would not 'force' a tooltip like this; you would use QWidget::setToolTip(const QString&) or capture tooltip events in QWidget::event(QEvent*). But normal QToolTips only appear after short delay, but you want them updated continuously.

I should state that I haven't tried this, but this is the way I would do it. Hope that helps!

cmannett85
  • 21,725
  • 8
  • 76
  • 119
  • Thank you for your advise. While I wait for a reply, I find a similar way. I use QLineEdit instead of QToolTip. With QLineEdit, I can let the "custom toolTip" follow the cursor. – Hyun-geun Kim Sep 17 '12 at 01:13