2017-09-22 1 views
0

Mac 응용 프로그램의 스크롤 막대 색상을 변경하고 싶습니다. 특히 배경색을 변경하고 싶습니다.스크롤 막대 색상 변경

내 응용 프로그램이 Qt 기반이므로 응용 프로그램이 이미 만들어져 실행 중입니다. QWidget에 대해 NSView을받을 수 있습니다.

Qt의 스타일 시트를 사용하여 스크롤바의 모양을 변경할 수 있지만 기본 스크롤바의 응용 프로그램 전체 배경색을 설정하는 것을 선호합니다.

시도했지만 [[NSApplication sharedApplication] keyWindow].backgroundColor = [NSColor grayColor]; 스크롤바는 밝은 흰색을 유지했습니다.

답변

0

this screenshot의 오른쪽에있는 스크롤 막대가 사용자가 찾고있는 것으로 가정합니다.

운영체제에서 정의되어 있기 때문에 스위프트로 변경할 수있는 색상이 많지 않습니다.

이 솔루션은 주로 코드 지향적이 아니기 때문에 사용자가 찾고있는 솔루션이 아니라는 것을 알고 있습니다. 그러나 내가 아는 한 다른 방법은 없습니다. .car 파일을 수정하려면 먼저 ThemeEngine을 다운로드해야합니다. here.

  1. 는 /System/Library/CoreServices/SystemAppearance.bundle/Contents/Resources로 이동 당신이 쓸 수있는 권한이 임의의 디렉토리에 "시스템 Appearance.car"라는 이름의 파일을 복사합니다.
  2. 이름이 "ScrollBarOverlay_Track"인 이미지 애셋을 찾고 기본 스크롤 막대 배경 이미지를 자신의 것으로 바꿉니다. Photoshop을 사용하여 편집했습니다.
  3. SystemAppearance.car의 수정 된 버전을 저장하고 앱의 Resources 폴더에 포함시켜야합니다.

    window.appearance = NSAppearance(appearanceNamed: NSAppearance.Name(rawValue: "SystemAppearance"), bundle: nil) 
    

    이 창문의 모양을 변경합니다 :

  4. 창을 초기화하는 다음 코드를 작성합니다. 다르게 이름을 지정하면 window을 창으로 교체하십시오.

희망이 있습니다.

+0

답변 해 주셔서 감사합니다. 그것은 나를 위해 작동하지 않았다. ThemeEngine에서 파인더 창으로 이미지를 드래그하여 PNG를 복사했습니다. 나는 그들을 편집하고 그들을 끌고 나서 새로운 자동차 파일을 저장했다. 그런 다음 Resources로 복사하여 NSView * my_view = (NSView *) (w-> winId()); NSWindow * my_win = [my_view window]; [my_win setAppearance : [[NSAppearance alloc] initWithAppearanceNamed : @ "SystemAppearance"번들 : nil]]; – koan

관련 문제