5

タイトルを書くときは、ツールチップのようにマウスの位置を表示したいと思います。そのためには、QCursorをオーバーライドする必要があると思いますよね?

しかし、QCursorの詳細と新しいcursorShapeの作成方法がわかりません。

このような例はありますか?

4

1 に答える 1

12

(多くのグラフィックスやCADアプリケーションのように)カーソルを移動するときに座標の読み取りが必要であると仮定すると、実際にはオーバーライドする必要はありませんQCursor

最も効率的なアプローチは、座標を提供するウィジェットによって異なりますが、ほとんどの場合、setMouseTracking(true)ウィジェットをオーバーライドして、次のようmouseMoveEvent(QMouseEvent* event)に表示するのが最も簡単な方法です。QToolTip

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.
}

通常、このようなツールチップを「強制」することはありません。でツールチップイベントを使用QWidget::setToolTip(const QString&)またはキャプチャしQWidget::event(QEvent*)ます。ただし、通常QToolTipのは少し遅れて表示されますが、継続的に更新する必要があります。

私はこれを試したことがないことを述べる必要がありますが、これは私が行う方法です。お役に立てば幸いです。

于 2012-09-14T09:10:38.653 に答える