Qt CSS :!hover seems to override defaults
-
Qt version: 5.4.2
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.The small app below demonstrates problem with Qlabels and :!hover, which has
the same problem as the :!focus selector.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(); }