2017-11-22 5 views
0

QLineEditのテキストカーソル位置にツールチップを配置するコードがあります(ツールチップの左下隅はテキストカーソルのすぐ上にあります)。Qt:ツールチップの高さを測定するか、またはアンカーツールチップを下から測定する

setToolTip(tip); 

    QPoint cur = mapToGlobal(cursorRect().topLeft()); 
    QHelpEvent *event = new QHelpEvent(QEvent::ToolTip, 
      QPoint(pos().x(), pos().y()), 
      QPoint(cur.x(), cur.y() - 2 * height() - 2)); 
    QApplication::postEvent(this, event); 

ツールチップの高さをQLineEdit::height()とおおよそ見積もりましたが、それは間違っていて、ツールチップが複数の行に折り返しているとひどく間違っています。

ツールチップのテキストの高さを測定する方法はありますか? アンカーポイントとしてボトム左またはボトムの中央を指定してツールチップを配置する方法はありますか?

答えて

0

QFontMetricsQToolTip::font()を使用しているようです。ここで

は私のソリューションです:

setToolTip(tip); 

    QFontMetrics fm(QToolTip::font()); 
    QRect r = fm.boundingRect(QRect(0, 0, 500, 50), 0, tip); 

    QPoint cur = mapToGlobal(cursorRect().topLeft()); 
    QHelpEvent *event = new QHelpEvent(QEvent::ToolTip, 
      QPoint(pos().x(), pos().y()), 
      QPoint(cur.x(), cur.y() - height() - r.height() - 4)); 
    QApplication::postEvent(this, event); 
関連する問題