Установить пользовательский QSS для нажатой кнопки

У меня есть пользовательская кнопка FlatButtonУ ведьмы есть логическое свойство isActive, Я хочу установить собственный стиль qss для активной (нажатой) кнопки. Заголовок класса:

class FlatButton : public QPushButton
{
    Q_OBJECT
    Q_PROPERTY(bool isActive READ isActive WRITE setActive)

public:
    explicit FlatButton();
    ~FlatButton();
    bool isActive() const; // getter of isActive property
    void setActive(bool state); // setter of isActive property

private:
    bool _active;
};

У меня есть объект этого класса:

FlatButton *filterButton = new FlatButton("Filter");
filterButton->setActive(false); // here I have green text on button

Я хочу изменить стиль в соответствии isAtive Значение свойства: когда isActive == true установить цвет текста на красный, когда isActive == false установить цвет текста на зеленый. Связь:

connect(filterButton, SIGNAL(clicked()), this, SLOT(onFilterClicked()));

Слот:

void SearchPanel::onFilterClicked()
{
    filterButton->setActive(true); // after this code button text is still green
}

Вопрос:

#FlatButton[isActive=false] {
    color: green;
}

#FlatButton[isActive=true] {
    color: red;
}

Имущество isActive работает как я хочу, но стиль qss не меняется, когда нажимается кнопка (у меня есть isActive == true, но цвет текста по-прежнему green). Что я делаю не так? Почему стиль не хочет меняться?

0 ответов

Другие вопросы по тегам