Qt悬停在子窗口小部件上,Qt :: WA_NoMousePropagation无法正常工作

时间:2018-01-28 14:26:59

标签: c++ qt qwidget

我有一个包含一些子窗口小部件的父窗口小部件。我面临的问题是,当我将鼠标悬停在子窗口小部件上时,父窗口小部件也会被悬停。

所以我已经通过了Qt的文档,它在http://doc.qt.io/archives/qt-4.8/qhoverevent.html中说Qt::WA_NoMousePropagation正是我需要的。但它根本不起作用。

这是一个基本的例子

#include <QLabel>
#include <QHBoxLayout>

class Label : public QLabel
{
    Q_OBJECT

public:
    Label(QWidget *parent = Q_NULLPTR) :
        QLabel("parent",parent),
        childLabel(new QLabel("child"))
    {
        this->setWindowState(Qt::WindowMaximized);
        childLabel->setAttribute(Qt::WA_NoMousePropagation); //<-not working
        childLabel->setObjectName("childLabel");
        auto hLayout = new QHBoxLayout;
        hLayout->addWidget(childLabel,0,Qt::AlignRight);
        hLayout->setContentsMargins(0,0,0,0);
        setLayout(hLayout);
        setStyleSheet(R"(
                      QLabel:hover{background-color: blue;}
                      #childLabel:hover{ background-color: yellow;}
                      )");
    }
    ~Label() = default;
private:
    QLabel *childLabel;
};

检查出来,当你将孩子盘旋时,你会发现父母仍在盘旋......我在这里遗失了一些东西,或者是Qt :: WA_NoMousePropagation无效。有没有解决方法?

提前谢谢

最诚挚的问候!

0 个答案:

没有答案