如何查询和更改QToolTip显示所需的时间?

时间:2016-05-31 15:19:04

标签: c++ qt

是否可以更改鼠标在窗口中的时间延迟以及工具提示的show事件?

是否有类似TTM_SETDELAYTIME之类的Qt包装器?根据Windows文档,默认值取决于双击间隔。

2 个答案:

答案 0 :(得分:4)

您必须设置一个覆盖QProxyStyle的自定义styleHint(),并返回QStyle::SH_ToolTip_WakeUpDelay的首选值。示例代码如下。

class CustomStyle : public QProxyStyle
{
    Q_OBJECT
public:
    ...
    int styleHint(StyleHint hint, const QStyleOption *option = Q_NULLPTR, const QWidget *widget = Q_NULLPTR, QStyleHintReturn *returnData = Q_NULLPTR) const Q_DECL_OVERRIDE {
        if (hint == SH_ToolTip_WakeUpDelay)
            return someCustomValue;
        else
            return baseStyle()->styleHint(hint, option, widget, returnData);
    }
}

答案 1 :(得分:1)

显然,使用内置的Qt工具提示是不可能的。在4.8 qapplication.cpp中,他们使用幻数:

d->toolTipWakeUp.start(d->toolTipFallAsleep.isActive()?20:700, this);

因此,默认行为是在700 ms后显示工具提示,并启动一个2000 ms的睡眠计时器。如果我们将鼠标悬停在另一个窗口(小部件)上,并且睡眠计时器仍处于活动状态,则延迟将减少到20毫秒,可能假设第一个工具提示不是用户想要的那个。