【发布时间】:2014-05-16 22:42:04
【问题描述】:
我有一个 QWidgetAction 和三个 QPushButtons 和一个 QMenu,其中包含许多操作,包括一个带有子菜单的操作。此菜单如下图所示,其中蓝线是分隔符。
所以,当我试图用鼠标从具有子菜单的菜单项中悬停三个按钮之一时,我没有从 css 设置的悬停效果。但是当我试图从没有任何子菜单的菜单项上悬停时,一切正常并且我有彩色背景。
所以,问题是:为什么会以这种方式工作以及如何解决?
我已经尝试过使用代码,是的,控件的行为发生了变化,但不是我需要的方式(我得到了按钮颜色,但颜色和形状错误):
bool CutCopyPasteWidget::eventFilter(QObject* object, QEvent* event)
{
if (object == m_cutButton || object == m_copyButton || object == m_pasteButton)
{
QEvent::Type t = event->type();
if (t == QEvent::Enter)
{
QPushButton* w = qobject_cast<QPushButton*>(object);
w->setAttribute(Qt::WA_Hover);
w->setAutoFillBackground(true);
w->update();
emit entered();
}
else if (t == QEvent::Leave)
{
QPushButton* w = qobject_cast<QPushButton*>(object);
w->setAttribute(Qt::WA_Hover, false);
w->setAutoFillBackground(false);
w->update();
}
}
return QWidget::eventFilter(object, event);
}
风格:
CutCopyPasteWidget QPushButton:hover:enabled
{
background: HOVERED_CONTEXT_BUTTON_GRADIENT;
border-color: HOVERED_ACTIVE_CONTEXT_BUTTON_BORDER;
}
CutCopyPasteWidget QPushButton:!hover:enabled
{
background: none;
border-color: ACTIVE_CONTEXT_BUTTON_BORDER;
}
CutCopyPasteWidget QPushButton:!hover:!enabled
{
background: none;
border-color: INACTIVE_CONTEXT_BUTTON_BORDER;
}
CutCopyPasteWidget QPushButton
{
min-width: 2pt;
}
更新:我创建了一个 github repo 并带有示例来演示该问题。
【问题讨论】:
-
向我们展示您的样式表。