有没有办法用popupMode == DelayedPopup配置QToolButton的弹出菜单延迟?

时间:2014-02-27 22:07:12

标签: qt

我正在创建一个具有历史记录的应用程序,例如在网络浏览器中:带有弹出菜单的后退和前进按钮,按住即可显示。 DelayedPopup模式是为我的场景创建的,它有点工作。

问题是用于检测保持的延迟太短。虽然我在谷歌浏览器中使用后退按钮没有任何问题,但在我的应用弹出式菜单中,当我打算只需点击一下时,弹出菜单就会弹出。

我认为将延迟设置为更大的值可以解决问题,但我找不到办法来做到这一点。 doc

The default delay is 600 ms; you can adjust it with setPopupDelay()

但显然是错误的或过时的信息,因为看不到setPopupDelay。

有什么建议吗?

更新:虽然延迟增加有助于弹出菜单不时显示。我认为Qt中存在一个错误。

1 个答案:

答案 0 :(得分:1)

Qt 3使用了

setPopupDelay。现在,您必须通过继承QStyle或其子类之一来创建自己的样式,并重新实现QStyle::styleHint方法。

int MyStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const
{
    if (hint == QStyle::SH_ToolButton_PopupDelay)
        return 1200;
    return QStyle::styleHint(hint, option, widget, returnData);
}