How to support :pressed state of style sheet for custom widget ?
-
What i have :-
I have a custom widget which extends QFrame (instead of QWidget as QFrame already has a working paintEvent implementation). I have overridden the mousePressed() and mouseReleased() to emit the pressed() released() and clicked() Signals. Everything upto this point is woring fine as expected.What i need :-
This custom widget is having basic style sheet support and it supports the :hover state just fine.
But the :pressed state is not working. I have already figured out that this is bcoz its not supported by QFrame/QLabel etc.
I wish to know what do i need to do in order to support the :pressed state.
Should i set some attribute / property on pressed and released OR anything else ? -
AFAIK this it's not possible to use pseudo states (and sub-controls) with custom widgets (except the one which are supported by the base class).
But you can set a custom dynamic property and check for it in the stylesheet:
@
void MyWidget::mousePressEvent(...)
{
this->setProperty("pressed", true);
this->style()->polish(this);
}
void MyWidget::mouseReleaseEvent(...)
{
this->setProperty("pressed", false);
this->style()->polish(this);
}
@in the stylesheet:
@
MyWidget[pressed="true"]
{
...
}
@ -
Thanks raven,
I was expecting a standard property or attribute which pertains to the state. But i guess there is not, This does the job :)