Qt:测量工具提示高度,或从底部锚定工具提示
Qt: measure tooltip height, or anchor tooltip from bottom
我有以下代码在 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()
,但这是错误的,并且当工具提示在多行上换行时会变得非常错误,因为它会覆盖行编辑。
有没有办法测量工具提示文本的高度?
或者通过将左下角或中下角指定为锚点来放置工具提示的方法?
似乎使用 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);
我有以下代码在 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()
,但这是错误的,并且当工具提示在多行上换行时会变得非常错误,因为它会覆盖行编辑。
有没有办法测量工具提示文本的高度? 或者通过将左下角或中下角指定为锚点来放置工具提示的方法?
似乎使用 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);