표시기 (켜기 또는 끄기) 인 약 40 개의 버튼이 있으며 상태에 따라이 표시기의 색상을 새로 고칩니다. 스타일 시트를 변경하여이 작업을 수행합니다. 이 작업을 수행하는 것은 끝났습니다. 표시기가 상태를 변경했거나 QBrush와 같은 것을 사용해야 할 때만 새로운 스타일 시트를 설정해야합니까?동적 방법으로 스타일 시트를 사용하면 많은 계산이 추가됩니다.
답변
예. Linux에서 Qt 4.6.2를 사용하면 QLabel의 텍스트 색상을 변경하는 스타일 시트를 설정하는 것이 매우 느립니다.
다이나믹 스타일 시트는 훌륭한 솔루션처럼 보였지만 나를 위해 필요한 setStyle()
은 setStyleSheet()
만큼 비쌌습니다!
많은 실험 후, 나는이 두 배 이상 빠르게, 그리고 빠른 일반적으로 50 배 수 있도록이 대안을 발견 : 당신의 (정적) 스타일 시트의 설정에 따라
QPalette palette = lbl->palette();
palette.setColor(QPalette::WindowText, Qt::gray);
lbl->setPalette(palette);
, 당신 ' d QPalette::WindowText
을 QPalette::Window
또는 QPalette::Button
으로 대체해야합니다. 자세한 내용은 QPalette documentation을 참조하십시오.
멋진 개념입니다. 불행한 점은 명시 적으로 언급 한 것은 "데모 전용"이며 "생산에 사용하지 말아야"합니다 (비록 내가 사용했지만). –
범프. 이전 대답을 무시하지 마십시오 :) –
@yanbellavance, '데모 전용이며'제작시 사용해서는 안되는 링크가 있습니까? –
완전한 스타일 시트를 동적으로 설정하지 마십시오. 대신 응용 프로그램 시작시 한 번 구문 분석하는 동적 스타일 시트를 사용하여 응용 프로그램 전체 스타일 시트를 정의하십시오. 우리는 필수 필드가 양식을 제시해야 많은 상황이있다
: 그런 스타일 시트에서 documentation에 설명 된대로 동적 스타일 속성을 정의합니다. 필드가 필수임을 사용자에게 알려주려면 효과적이지만 (모호하게 보이지만) 한 가지 해결책은 해당 필드의 배경색으로 노란색을 사용하는 것입니다. Qt 스타일 시트를 사용하여 구현하기가 매우 쉽습니다. 귀하의 경우에는
*[mandatoryField="true"] { background-color: yellow }
, 당신은 아마 이런 식으로 뭔가를 할 수 :
QPushButton[state="on"] {
background-color: green;
}
QPushButton[state="off"] {
background-color: red;
}
그런 다음 버튼 '상태'속성을 업데이트 첫째, 우리는 다음과 같은 응용 프로그램 전체 스타일 시트를 사용합니다 :
pushButton->setProperty("state", "on");
pushButton->setStyle(QApplication::style());
불행하게도, Qt는 4.6 당신은 따라서 0123을 위젯의 스타일을 재설정하여 스타일 시트가 재 계산해야합니다전화.
이렇게 동적 스타일 시트를 사용하는 것은 매우 빠릅니다. 동적 스타일 시트 속성을 많이 사용하고 성능 저하를 감지하지 못하는 응용 프로그램을 개발 중입니다.
대단한 답변을 보내 주셔서 감사합니다. 그래서 Qt 4.6에서 pushButton-> setStyle (QApplication :: style());을 호출해야합니다. 스타일에 영향을주기 위해 속성을 변경할 때마다? 나는 미래의 문제를 피하기 위해 그것을 지금 제 코드에 넣을 것입니다. –
Qt 4.6에서 이것이 확실 할 것이라 확신하십니까? –
스타일을 재설정하지 않고도 동적 작동을 유지할 수 없었습니다. 또한이 질문을보십시오 : http : // stackoverflow.com/questions/1595476/are-qts-stylesheets-really-handling-dynamic-properties/1849127 # 1849127 위젯 스타일을 재설정하지 않고도 동적 동작을 얻을 수 있었습니까? 나는 리눅스에서 Qt를 사용하고있다. –
내 경험에 따르면 스타일 시트는 너무 많은 리소스를 소비하므로 가능하면 피하는 것이 좋습니다.
너무 많이 무엇입니까? –
새로 고침 빈도는 1 초에 1 초 였고 내 앱이 실행되는 쿼드 코어 PC는 너무 부드럽게 실행되어 0 %로 실행되었습니다. –
- 1. 스타일 시트를 기반으로하는 동적 콘텐츠 전환
- 2. JavaScript로 외부 스타일 시트를 삽입하는 방법 (동적)
- 3. 스타일 시트를 변경하면 qlabel이 이동합니다.
- 4. 스타일 시트를 첨부하려면 어떻게해야합니까?
- 5. 스타일 시트를 PHP로 바꾸기
- 6. jQuery .html()을 사용하면 IE8이 추가됩니다.
- 7. ID 선택기를 사용하여 동적 스타일 시트를 만들려면 어떻게해야합니까?
- 8. HttpContext.Current 호출 뒤에 얼마나 많은 계산이 있습니까?
- 9. 여러 xslt 스타일 시트를 합치십시오.
- 10. 스타일 시트를 링크로 바꾸는 방법
- 11. 공유 Qt 스타일 시트를 찾고
- 12. 프로젝트간에 CSS 스타일 시트를 공유하는 방법은 무엇입니까?
- 13. Windows Phone, 동적 스타일
- 14. 동적 PHP 스타일 시트 축소하기
- 15. Jquery 스타일 시트를 확인하고 조치를 취하십시오
- 16. 특정 스타일 시트를 사용하여 iPad 타겟팅하기
- 17. CSS 스타일 시트를 양방향으로 사용할 수 있습니까?
- 18. 스타일 시트를 적용 할 수없는 이유는 무엇입니까?
- 19. DocBook XSL - 원본 스타일 시트를 수정 하시겠습니까?
- 20. 스타일 시트를 사용하여 버튼의 색상을 어떻게 설정합니까?
- 21. QTabWidget tab 스타일 시트를 사용할 때의 위치
- 22. DBMS_XSLProcessor는 확장 기능이있는 스타일 시트를 처리합니까?
- 23. Dreamweaver/Chrome에서 스타일 시트를 다시로드하려고 시도합니다.
- 24. 직장에서 Qt 스타일 시트를 사용하는 방법?
- 25. 브라우저 스니핑없이 iPhone에만 스타일 시트를 적용하려면 어떻게해야합니까?
- 26. Jquery로 보조 스타일 시트를 변경하는 방법?
- 27. 비행 접시가 스타일 시트를 읽지 않는다
- 28. IE9 링크 된 스타일 시트를 적용하지 않았습니다.
- 29. RSS 피드에 CSS 스타일 시트를 적용하는 방법
- 30. ZendX_JQuery에 스타일 시트를 추가하면 jQuery가 비활성화됩니까?
O/S 성능 모니터 (Windows에서'perfmon.exe')를 사용하여 CPU 계산량을 측정 한 적이 있습니까? – ChrisW