我有一个包含一些子窗口小部件的父窗口小部件。我面临的问题是,当我将鼠标悬停在子窗口小部件上时,父窗口小部件也会被悬停。
所以我已经通过了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无效。有没有解决方法?
提前谢谢
最诚挚的问候!