전역 qss
스타일 시트를 파생 클래스와 함께 사용하고 싶습니다. paintEvent
(style sheet reference 또는 here)을 재정의해야한다는 것을 알고 있습니다.C++ 네임 스페이스 (선택자)의 파생 클래스에있는 Qt 스타일 시트
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에 써야합니다. "Widgets inside C++ namespaces"
여기서 JK의 간단한 예제를 시도한 후에 갑자기 실수를 깨달았습니다. 올바른
:
MyNamespace--CDerived { background-color: black; } // works, use -- for ::
비고 : SO 질문 (a, b)를 Relateds하지만,이 특정 질문에 대한 대답과 함께. 내 파생 클래스는 C++ 네임 스페이스에 있습니다.
모르겠어요 경우 그 날, 나는 있지만, 여기에서'opt.init()'를 찾을 수 없습니다 : http://qt-project.org/doc/qt-5/qstyleoption.html – msrd0
또한보십시오 Qt StyleSheets를 사용하는 경우 : http://qt-project.org/doc/qt-5/stylesheet-examples.html – msrd0