[Interest] Qt CSS :!hover seems to override defaults
Jesse Jaara
jesse.jaara at gmail.com
Sat Jun 20 15:11:34 CEST 2015
I've brought up this on the IRC and the Forum sometime ago, but
haven't received any responses as of yet. So I'm posting this here
too.
I am trying to style certain elements of my application with the CSS
support.
I want the elements to look "normal" when they are active (:focus), but have
different styling when they are inactive . For this I need to use the
:!focus selector,
but it results in the normal/default style not being applied to the
widget when
focus is gained, instead the :!focus rules still persist. Adding another
rule :focus
does override the :!focus, but I want to use the system's style's
default instead
of my own values.
This seems to be intended behavior as both Qt4 and Qt5 act in the same
fashion.
What I'm looking for is to understand this behavior and preferably to
find a way
around it without having to resort to writing both :!focus and :focus rules.
The small app below demonstrates problem with Qlabels and :!hover, which has
the same problem as the :!focus selector.
### CssTest.pro: ###################################
QT += core gui widgets
SOURCES += CssTest.cpp
### CssTest.cpp: ###################################
#include <QApplication>
#include <QLabel>
#include <QVBoxLayout>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QVBoxLayout *mainLayout = new QVBoxLayout;
QLabel* redLabel = new QLabel("Red when mouse does not hover over
this,\n"
"but should turn back to default
color (black)\n"
"when mouse hovers over this text.");
redLabel->setStyleSheet("QLabel:!hover { color: red; }");
mainLayout->addWidget(redLabel);
QLabel* blueLabel = new QLabel("Black when mouse does not hover
over this,\n"
"but should turn to blue when the
mouse hovers\n"
"over this text.");
blueLabel->setStyleSheet("QLabel:hover { color: blue; }");
mainLayout->addWidget(blueLabel);
QWidget *w = new QWidget();
w->setLayout(mainLayout);
w->setWindowTitle("Css negation");
w->show();
return app.exec();
}
More information about the Interest
mailing list