2014-09-18 2 views
1

나는 PySide에서 화면 해상도를 얻기 위해 노력하고 있어요 : 그래서 해상도가 2560 1600 알Qt가 잘못된 화면 지오메트리를 제공합니까?

class Prog(QtGui.QDialog): 
    def __init__(self): 
     super().__init__() 
     self.timer = QtCore.QTimer() 

     desktop = QtGui.QDesktopWidget() 
     dim = desktop.availableGeometry(desktop.primaryScreen()) 
     print(dim) 
     print(desktop.width()) 
     print(desktop.height()) 
     print(QtGui.QApplication.desktop().screenGeometry()) 

app = QtGui.QApplication(sys.argv) 
prog = Prog() 
prog.show() 
sys.exit(app.exec_()) 

나는 맥북 프로에 생각을하지만, Qt는 지속적으로 잘못된 대답을 줄 것으로 보인다 :

PySide.QtCore.QRect(0, 22, 1440, 874) 
1440 
900 
PySide.QtCore.QRect(0, 0, 1440, 900) 

여기 제가 잘못 했나요? 당신이 찾을 수 retina display support 주로이 부분 Mac OS X High-dpi Support :

+2

Qt 5의 특정 화면에 대한 정확한 화면 해상도를 얻으려면 QScreen :: devicePixelRatio (망막 디스플레이의 경우 값 2.0을 반환)를 사용하고 QScreen 너비와 높이를 곱하십시오. –

답변

5

아무것도 Qt는 잘못 없다, 당신은이 문서를 읽을 수 있습니다

는 OS X 높은 dpi의 모드로 키는 그 이었다 대부분의 기하학 이전에 장치 픽셀에 지정된 장치가 장치에 독립적 인 점에 있습니다. 여기에는 데스크탑 기하학 (15 인치 망막에서는 MacBook Pro가 1440x980이고 전체 2880x1800은 아님), 창 지름 및 이벤트 좌표가 포함됩니다. CoreGraphics 페인트 엔진은 전체 해상도를 알고 있으며 해당 해상도로 출력합니다. 예를 들어 의 경우 100x100 크기의 창은 보통 및 high-dpi 화면 (다른 모든 것은 동일 함)의 화면에서 동일한 영역을 차지합니다. high-dpi 화면에서 창지지 저장소는 200x200 픽셀을 포함합니다.

과 :이 모드의

주요 이점은 이전 버전과의 호환성 및 무료 높은 dpi의 벡터 그래픽입니다. 인식되지 않는 응용 프로그램은 이전과 동일한 지오메트리로 을 계속 작업하며 하드 코딩 된 픽셀 값을 유지할 수 있습니다. 동시에 텍스트와 같은 선명한 벡터 그래픽을 무료로 얻을 수 있습니다. 래스터 그래픽은 자동으로 개선되지 않지만 을 관리 할 수 ​​있습니다. 단점은 점과 픽셀을 혼합 한 코드로 작업 할 때 필연적 인 좌표계 혼동 인 입니다.

포인트와 픽셀 간의 축척 비율은 항상 2 배입니다. 화면 해상도를 변경할 때도 입니다. 포인트와 픽셀은 같은 크기로 축척 된 입니다. "추가 공간"응용 프로그램의 배율을 조정하면 은 큰 배킹 저장소로 렌더링되고 실제 배율은 으로 조정됩니다.

관련 문제