2016-12-12 6 views
1

내가 그 아이콘이 :
enter image description hereQToolButton이 비활성화 상태에서 호버를 허용합니까?


이 실제로 내가 지금 Qt는 디자이너에서 제대로 작동하고있어, 오버라이드 페인트 이벤트없이 QToolButton의 상속인이다.
그것에는 몇 가지 오버로드 스타일 :

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); 
} 

버튼이 비활성화 상태이지만 호버에 반응! 내가해야 할 일은
enter image description here

이 호버에 표시됩니다 테두리를 제거하는 것입니다
여기에 공중 선회 아이콘입니다.
나는 hover : disabled overloading 및 다른 것들과 같은 많은 변형을 시도했다.
아무도 도와 줄 수 있습니까?

답변

1

문제가 발견되었습니다. Qt Designer로 내 보낸 MyToolButton 클래스가 있습니다.
그것은 같은 lokks paintEvent 오버로드했습니다

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

그래서 그거야을.