IT/QT

[C++][QT] QDialog Stylesheets not work

참고만 2022. 10. 24. 12:01
728x90
반응형

QDialog베이스로 작업도중 내부에있는 컨트롤러의 style sheets를 설정해 주었는데 디자이너에서는 적용된 것 처럼 보이지만 막상 실행을하면 반영되지 않은 상태로 보여지는 경우가 있다.

 

나 같은 경우는 QDialog 위에 QTreeWidget의 스크롤바 디자인을 바꾸기위에 Style Sheets를 변경하였는데 곧바로 변경되어 적용된 디자이너와는 달리 실행해 보니 변경전 디자인으로 출력이 된 경우였다.

이게 Style Sheets의 설정 문제라고 생각할수 있지만 QWidget 위에 있는 QTreeWidget의 디자인은 제대로 변경되는것을 확인했다.

 

해결한 방법은 보통 ui 구성을할때 QFrame 하위로 컨트롤러들을 배치하는데 최상위 Frame의 Style Sheets에다가 스크롤 설정을 해주니 해결이 되었다.

 

솔직히 이유는 정확히 알수 없지만 나 같은경우의 둘의 차이점이라고 한다면 기본 베이스가 QDialog와 QWidget이였다.

 

- 결론

* QDialog 베이스 : 최상위 프레임에 Style Sheets 설정해줌

* QWidget 베이스 : 해당 컨트롤러(QTreeWidget)에 Style Sheets 설정해줌

 

아래는 적용했던 스크롤 Style Sheets 코드이다. 

이유 아시는분은 누구나 댓글 달아주세요.

 

더보기
QTableWidget
{
	border: 1px solid #d7dade; border-radius: 3px;
}

QScrollBar:vertical{
	boder:none;
	background-color: rgb( 241,244,248);
	width: 10px;
	margin: 15px 0 15px 0;
	boder-radius: 0px;
}

/*  HANDLE BAR VERTICAL */
QScrollBar::handle:vertical {	
	background-color: rgb(212, 229, 160);
	min-height: 30px;
	border-radius: 7px;
}
QScrollBar::handle:vertical:hover{	
	background-color: rgb(190, 191, 193);
}
QScrollBar::handle:vertical:pressed {	
	background-color: rgb(190, 191, 193);
}

/* BTN TOP - SCROLLBAR */
QScrollBar::sub-line:vertical {
	border: none;
	background-color: rgb( 212, 229, 160);
	height: 15px;
	border-top-left-radius:	1px;
	border-top-right-radius: 1px;
	subcontrol-position: top;
	subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical:hover {	
	background-color: rgb(190, 191, 193);
}
QScrollBar::sub-line:vertical:pressed {	
	background-color: rgb(190, 191, 193);
}

/* BTN BOTTOM - SCROLLBAR */
QScrollBar::add-line:vertical {
	border: none;
	background-color: rgb( 212, 229, 160);
	height: 15px;
	border-bottom-left-radius: 1px;
	border-bottom-right-radius: 1px;
	subcontrol-position: bottom;
	subcontrol-origin: margin;
}
QScrollBar::add-line:vertical:hover {	
	background-color: rgb(190, 191, 193);
}
QScrollBar::add-line:vertical:pressed {	
	background-color: rgb(190, 191, 193);
}

/* RESET ARROW */
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
	background: none;
}
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
	background: none;
}

QScrollBar:horizontal{
	boder:none;
	background-color: rgb( 241,244,248);
	height: 10px;
	margin: 0 15px 0 15px;
	boder-radius: 0px;
}

/*  HANDLE BAR HORIZONTAL */
QScrollBar::handle:horizontal {	
	background-color: rgb(212, 229, 160);
	min-width: 30px;
	border-radius: 7px;
}
QScrollBar::handle:horizontal:hover{	
	background-color: rgb(190, 191, 193);
}
QScrollBar::handle:horizontal:pressed {	
	background-color: rgb(190, 191, 193);
}

/* BTN LEFT - SCROLLBAR */
QScrollBar::sub-line:horizontal {
	border: none;
	background-color: rgb( 212, 229, 160);
	width: 15px;
	border-left-top-radius:	1px;
	border-left-bottom-radius: 1px;
	subcontrol-position: left;
	subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal:hover {	
	background-color: rgb(190, 191, 193);
}
QScrollBar::sub-line:horizontal:pressed {	
	background-color: rgb(190, 191, 193);
}

/* BTN RIGHT - SCROLLBAR */
QScrollBar::add-line:horizontal {
	border: none;
	background-color: rgb( 212, 229, 160);
	width: 15px;
	border-right-top-radius: 1px;
	border-right-bottom-radius: 1px;
	subcontrol-position: right;
	subcontrol-origin: margin;
}
QScrollBar::add-line:horizontal:hover {	
	background-color: rgb(190, 191, 193);
}
QScrollBar::add-line:horizontal:pressed {	
	background-color: rgb(190, 191, 193);
}

/* RESET ARROW */
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:vertical {
	background: none;
}
QScrollBar::add-page:horizontal, QScrollBar::sub-page:vertical {
	background: none;
}​

 

 

 

좋은 의견은 언제나 환영입니다.

728x90
반응형