动态tooltip。也就是一个widget上的tooltip是变化的。此时需要重写QWidget::event()函数,在里面判断事件类型,如果是QEvent::ToolTip,则控制显示的文本的内容,即可实现动态tooltip。
看如下代码示例:
- bool SortingBox::event(QEvent *event)
- {
- if (event->type() == QEvent::ToolTip)
- {
- QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
- int index = itemAt(helpEvent->pos());
- if (index != -1)
- {
- QToolTip::showText(helpEvent->globalPos(), shapeItems[index].toolTip());
- }
- else
- {
- QToolTip::hideText();
- event->ignore();
- }
- return true;
- }
- return QWidget::event(event);
- }
可以看到,是调用 QtoolTip::showText()在某个位置显示tooltip文本。