2011-01-09 3 views
5

QMdiSubWindow의 제목 표시 줄을 사용자 정의하고 싶습니다. 그 때문에 qss를 사용합니다.qss를 사용하여 QMdiSubWindow의 제목 표시 줄을 사용자 정의하는 방법은 무엇입니까?

QMdiSubWindow { border: 1px solid #000000; background: #000000 } 
QMdiSubWindow:title { background: #000000 } 

문제는이 qss를 적용하면 창 아이콘이 사라집니다. 는 나는 내가 QMdiSubWindow을 위해 그것을 정의하는 방법을 찾을 수 없습니다 그러나, QDockWidget

QDockWidget { ... titlebar-close-icon: url(myCloseIcon.png); ... } 

을위한 QSS에서이 아이콘을 정의 할 수 있습니다 알고. 아마도 이런 식으로 존재하지 않습니다. 가능한지 알고 계십니까?

+0

이것은 여러 해 동안의 문제입니다. MDI 자식을 스타일링하기위한 해결 방법이 있습니까? – cytrinox

답변

1

Qt 5.2 현재로는 변경할 수 없습니다. 5.3을 확인하지 않았지만 AFAIK는 5.3 릴리스의 QMdiArea/QMdiSubWindow에서 아무 것도 변경하지 않았습니다.

가장 쉬운 해결책은 QCommonStyle을 사용하고 QPainter을 사용하여 제목 표시 줄을 칠하는 것입니다. 자세한 내용은 QCommonStyleQStyle 문서를 참조하십시오. 스타일 클래스에 대해 QCommonStyle을 유도하고 QStyle을 유도하지 않는 것이 좋습니다. QCommonStyleQStyle을 상속하므로 아무 것도 풀지 않습니다.

그리고 당신은 드롭 후 하위 창에 그림자 여기에 왼쪽 QMdiSubWindowQMdiArea를 파생 QMdiSubWindow 파생 클래스에 QWidget::setWindowFlags(Qt::FramelessWindowHintflag)를 호출하고 처음 자신의 서브 윈도우에서 구현하는 것입니다 수있는 유일한 옵션으로 더 복잡한 효과를 달성하고자하는 경우 나만의 제목 표시 줄. 그런 다음 제목이 QSS에서 사용자 정의되도록 Q_PROPERTY 유형을 QColor으로 정의하고 QSS의 내용을 노출 된 것처럼 here에 액세스 할 수 있습니다.

또 다른 옵션은 처음부터 새로운 MDI 영역 위젯을 만드는 것이지만, 귀하의 경우에는 적용되지 않을 것이라고 생각합니다. 사용자 정의 스타일을 사용하여 제목 표시 줄을 사용자 정의하면됩니다. 문제가있는 경우이 게시물의 편집으로 예제를 제공 할 수 있습니다.

그러나 QSS을 사용하여 표준 QMdiSubWindow을 맞춤 설정하려는 경우 불행히도 현재로서는 불가능합니다.

+1

좋은 해결책 인 것 같습니다. 고마워요. – cytrinox

관련 문제