我有以下代码将工具提示放在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()
,但这是错误的,当工具提示包装在多行上时会变得非常错误,因为它会覆盖行编辑。
有没有办法测量工具提示文字高度? 或者通过将左下角或底部中心指定为锚点来放置工具提示的方法?
答案 0 :(得分:0)
似乎使用QFontMetrics
并QToolTip::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);