Qt中因为窗口不是active活动窗口或者focus焦点窗口时,提示框QToolTip不显示的解决办法

        在Qt开发中遇到一个程序中有两个或多个独立窗口都显示在桌面上,且我们希望不管鼠标放在哪个窗口的哪个控件上,该控件的ToolTip提示框会显示。

        但是实际上因为Qt只允许当前active活动窗口或者focus焦点窗口的控件鼠标放上去才会显示,那么如果不是活动窗口或者焦点窗口也需要实现把鼠标放上去会显示ToolTip提示框该怎么办呢?我这里提供一种办法:

bool SearchListWnd::eventFilter(QObject *obj, QEvent *event)
{
    if(event->type() == QEvent::Enter)
    {
        QPushButton *button = qobject_cast<QPushButton*>(obj);
        if(button)
        {
            if (event->type() == QEvent::Enter)
            {
                QPalette palette = QToolTip::palette();
                palette.setColor(QPalette::ToolTipBase, QColor(255, 255, 255));
                palette.setColor(QPalette::ToolTipText, QColor(102, 102, 102));
                QToolTip::setPalette(palette);
                QToolTip::showText(QCursor::pos(), button->toolTip());

            }

        }
    }
    return QObject::eventFilter(obj, event);
}

给所需的窗口重载事件过滤器,给改窗口的需要展示提示框的子控件装上事件过滤器,例如

btn_item是窗口searchListWnd的子控件。

btn_item->installEventFilter(searchListWnd);

那么当鼠标放在searchListWnd窗口的子控件btn_item上,tooltip提示框就会显示了,不管searchListWnd是不是焦点窗口或活动窗口。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值