Qt:测量工具提示高度,或从底部锚定工具提示

时间:2017-11-22 14:38:26

标签: qt tooltip

我有以下代码将工具提示放在QLineEdit中的文本光标位置(即工具提示的左下角保持在文本光标的上方):

    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(),但这是错误的,当工具提示包装在多行上时会变得非常错误,因为它会覆盖行编辑。

有没有办法测量工具提示文字高度? 或者通过将左下角或底部中心指定为锚点来放置工具提示的方法?

1 个答案:

答案 0 :(得分: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);