2013-02-14 2 views
20

을 찾아 내 쿠분투 12.10 리눅스 시스템에서 QT4와 함께 Qt5를 설치 한 다음 발견 : QT4로 컴파일기본 KDE는 Qt는 5 응용 프로그램

  • 프로그램은 기본 KDE는 모양과 느낌이있다. 나는 기본 KDE의 산소 테마를 사용하고 내 프로그램도 마찬가지입니다 (제목이 부드러운 그라디언트와 집중된 위젯을 파란색으로 선택합니다).
  • 하지만 코드를 변경하지 않고도 Qt5 로 다시 컴파일 할 때, 그것은 다른 스타일을 사용하는이 (가 퓨전라고 보인다) 그리고 어색한 모양과 아웃 오브 장소
(오른쪽 그림 참조)

Native look of Qt4 appNOT native look of Qt5 app

내가 원하는 것은 꽤 힘이 빠릅니다. 내 앱이 주변 시스템에 맞게, 즉 항상 네이티브로 보이길 원합니다. Qt4를 사용할 때는 기본적으로이 작업을 수행하는 데 익숙합니다. Qt5는 또한 Windows에서 일반적인 기본 모양을 가진 것처럼 보였습니다. 그러나 쿠분투에서도 똑같이하기 위해서 무엇을해야합니까? 이상적으로 도처에? 내 말은, 나는 엄격하게 사용하도록 내 애플의 리눅스 빌드를 강제하고 싶지 않다. 산소. 나는 그것이 KDE에서 현재 설정되어있는 테마를 사용하기를 원합니다. 마치 오래된 Qt4에서와 마찬가지입니다.

앱 코드가이 문제와 관련이없는 것처럼 보입니다. QStyle이 없기 때문에 Qt의 전형적인 안녕하세요. 그러나 경우에만 it's on GitHub.

UPD : @peppe has given 꽤 충분한 답이 문제가 (KDE에서 산소 테마 QT4에 대해 컴파일 및 Qt5하여 사용할 수 없습니다)이 발생하는 이유. 하지만이 문제를 해결하는 방법에 대한 답변은 에 있습니다. Oxygen 테마 소스를 찾으려고했지만 Firefox theme을 제외한 다른 것을 찾지 못했습니다.

UPD2 :suggested @kwirz 흥미로운 아이디어 : GTK + 테마를 사용하는 응용 프로그램을 강제하고, GTK 윈도우가 산소와 유사하게 KDE 설정에서산소 GTK 수 있습니다. Semi-native look of Qt5 app using oxygen-gtk

그러나 다른 한편으로는, 우리가 이미 약간의 차이를 볼 수

: 한편으로는 실제로 산소에 가까운 모습 읽기 전용 라인 편집은 회색으로, 집중 버튼을 여전히 강조 표시된되지 않는 등 불행하게도 이 기술을 적용 할 때 더 복잡한 위젯은 더욱 유물 (특히 콤보 상자와 회 전자에) 표시하기 :

Artifacts on QComboBox and QTimeEdit using oxygen-gtk

이 기술은 완벽한 솔루션이 될 수없는 것처럼 보이지만 여전히 매우 유용합니다.

답변

14

산소는 KDE의 일부이므로 찾을 수 있습니다. 그것은 독립적 인 주제가 아닙니다. Qt 5에 대해 KDE를 빌드 할 수는 없지만 지원되지 않습니다. KDE (KDE 5)의 다음 주요 버전은 Qt 5를 사용하게됩니다.

지금 당장은 할 수있는 일이 전혀 없습니다. 산소 GTK가 설치되어있는 경우 모양과 KDE 4에서 좋은 행동하도록 응용 프로그램을 원하는 경우, Qt는 4.

+1

KDE 코드에서 Oxygen을 테마로 추출 할 수있는 방법은 없습니다. 나는 그걸 가지고 놀 수 있고 Qt5로 빌드 할 수 있기를 바랬다 ... – NIA

+0

@NIA 산소는 KDE에 의존하고 KDE는 Qt4 만 사용할 수 있기 때문에 Qt5를로드하는 동시에 Qt4를로드 할 수 없기 때문에 Qt5를 사용할 수 없다. 가능한. –

+0

아, 알겠습니다. KDE 5에서 Qt5를 사용할 때까지는 KDE에서 Qt5를 사용하지 않을 것입니다. – NIA

9

당신의 앱이 아닙니다. Qt 5는 Qt 4가 아닌 Qt 5에서 컴파일되므로, Qt 5는 그것을 사용할 수 없으며 기본 스타일 ("fusion")으로 돌아갑니다.스타일은 실제로 플러그인 인입니다. 즉,로드 및 사용하기 위해 API/ABI 요구 사항을 준수해야합니다. Qt 5에 대해 컴파일 된 산소 스타일이 필요합니다.

+0

Qt5에 대해 컴파일 된 산소 스타일을 얻는 방법에 대한 아이디어가 있고 그것에 대해 내 응용 프로그램에 알리시겠습니까? – NIA

+0

아니요, 죄송합니다. KDE 개발자에게 자신의 계획에 대해 물어보아야합니다 :-) – peppe

4

해결 방법으로

QApplication::setStyle(QStyleFactory::create("GTK+")); 

하려고 사용, 그것은 기본 보인다.

+0

아이디어에 감사드립니다. 나는 그것에 대해 생각하지 않았습니다. 내 질문에 대해 몇 줄을 업데이 트했습니다. – NIA

0
는 매개 변수로 Qt5 응용 프로그램을 시작

: 모든 QT5 애플 리케이션이하게 내가 알고 전역 설정이 없습니다

-style=gtk 

.

행운을 빈다.

관련 문제