1

我有那个图标:
在此处输入图像描述


这是 QToolButton 的继承者,没有覆盖绘制事件,实际上我现在正在 Qt 设计器中工作。
它有一些重载样式:

MyToolButton {
  border-style: none;
  padding-right: 14px;
  border-radius: 1.5px;
}

MyToolButton:hover {
  background-color: rgb(220, 224, 228);
}

MyToolButton:hover:focus {
  background-color: rgb(220, 224, 228);
}

MyToolButton:pressed {
  background-color: rgb(193, 201, 208);
}

MyToolButton:pressed:focus {
  background-color: rgb(193, 201, 208);
}

MyToolButton:menu-arrow {
  image: url(:/Images/i13_down_arrow_combo.png);
}

MyToolButton:menu-arrow:disabled {
  image: url(:/Images/i13_down_arrow_combo_disabled.png);
  outline: none;
  border: 0px;
}

MyToolButton::menu-button {
  border-radius: 0px;
  border: 1px solid transparent;
  padding-right: 2px;
  padding-left: 2px;
  width: 8px;
}

MyToolButton::menu-button:pressed {
  border-top: 1px solid rgb(169, 180, 190);
  border-right: 1px solid rgb(169, 180, 190);
  border-bottom: 1px solid rgb(169, 180, 190);
  border-top-right-radius: 1.5px;
  border-bottom-right-radius: 1.5px;
}

MyToolButton::menu-button:pressed:focus {
  outline: none;
  border: 0px;
  padding-right: 3px;
}

MyToolButton[isMenuShown="false"]::menu-button:pressed:focus
{ 
  background-color: rgb(220, 224, 228);
}


MyToolButton[isMenuShown="true"]::menu-button:pressed:focus
{
  background-color: rgb(193, 201, 208);
}

该按钮处于禁用状态,但它会在悬停时做出反应!
这是悬停的图标:
在此处输入图像描述

我需要做的是删除悬停时显示的边框。
我尝试了很多变体,例如悬停:禁用重载和其他东西。
有人可以帮忙吗?

4

1 回答 1

1

发现了那个麻烦。我有自定义类 MyToolButton 导出到 Qt Designer。
它重载了paintEvent,看起来像:

void MyToolButton::paintEvent(QPaintEvent* event) {
  QToolButton::paintEvent(event);
  if (<some condition>)
  else if (underMouse()) // <-----NO isEnabled() here
      drawSolidBorder ... ///
  else if (<some condition>)
      drawSolidBorder ... ///
}

就是这样了。

于 2016-12-12T11:01:45.827 回答