Я хочу использовать мою глобальную таблицу стилей qss
с производным классом. Я понимаю, что мне нужно переопределить paintEvent
(ссылку на таблицу стилей, или здесь).
void CustomWidget::paintEvent(QPaintEvent *) {
QStyleOption opt;
opt.init(this); // tried initFrom too, same result=>not working
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
Однако, похоже, это не работает. С CDerived:QWidget
и следующими строками таблиц стилей я сталкиваюсь:
CDerived { background-color: black; } // no effect
QWidget { background-color: black; } // works
CDerived
реализует paintEvent
как указано выше. Что-нибудь еще мне нужно сделать?
-- Изменить/решение-
Благодаря подсказке JK я понял это. Мой приведенный выше пример на самом деле неправильно отражает мой сценарий. Мой реальный класс находится в пространстве имен C++ (моя ошибка, я пропустил это). Поэтому мне нужно написать MyNamespace--CDerived
в qss. См. "Виджеты внутри пространств имен C++"
После того, как я попробовал здесь простой пример JK, я внезапно понял свою ошибку!
Правильный:
MyNamespace--CDerived { background-color: black; } // works, use -- for ::
Примечания: Связанный вопрос SO (a,b), но без ответа на этот конкретный вопрос. Мой производный класс находится в пространстве имен C++.
opt.init()
здесь: qt-project.org/doc/qt-5/qstyleoption.html - person msrd0   schedule 06.10.2014