윈도우용 Qt - 특정 문제
이 페이지에는 Windows용 Qt에 대한 정보가 포함되어 있습니다.
설치 위치
예를 들어 C:\Program Files와 같이 공백이 있는 디렉터리에 Qt를 설치하면 qmake에 문제가 발생할 수 있습니다.
이 문제를 방지하려면 공백이 없는 하위 디렉터리에 Qt를 설치하십시오.
최대 경로 길이
Qt와 컴파일러 도구가 모두 사용하는 Win32 API에는 260자의 최대 파일 경로 길이가 기본으로 설정되어 있습니다(MAX_PATH
). 절대 또는 상대 디렉토리 구조가 너무 길면 다양한 형태로 문제가 발생할 수 있습니다. 따라서 파일 시스템 경로를 한도 내에서 유지하고 빌드 디렉터리는 소스 디렉터리 근처에 배치하는 것이 좋습니다.
Visual Studio
구조체 및 공용체 멤버의 정렬을 수정하는 특수 플래그(예: /Zp2
)를 사용할 때 이상한 문제가 발생하는 경우 응용 프로그램에 설정된 플래그로 Qt를 다시 컴파일해야 합니다.
전체 화면 OpenGL 기반 창
창이 OpenGL 기반 서페이스를 사용하고 있고 전체 화면 모드로 표시되는 경우 애플리케이션의 일부인 다른 최상위 창에 문제가 발생할 수 있습니다. Windows DWM의 제한으로 인해 전체 화면 모드로 전환할 때 OpenGL 기반 창에 대한 합성이 올바르게 처리되지 않습니다. 따라서 다른 최상위 창이 표시될 때 전체 화면 창 위에 다른 최상위 창이 배치되지 않습니다. 예를 들어 메뉴가 올바르게 표시되지 않거나 대화 상자가 표시되지 않을 수 있습니다.
setSurfaceType()가 명시적으로 호출될 때 창이 OpenGL 기반 서페이스를 사용하거나 창 내부에서 OpenGL이 필요한 항목이 사용되어 전체 창이 OpenGL 기반이 되는 경우 창이 OpenGL 기반이 될 수 있습니다. 예를 들어 QOpenGLWidget 또는 QQuickWidget 이 이를 트리거할 수 있습니다. 그러나 createWindowContainer()로 호스팅되는 QWindow 에 서페이스가 포함되어 있거나 더 이상 사용되지 않는 QGLWidget이 사용되어 전체 화면 창을 덮는 경우에는 이 문제가 발생하지 않습니다.
이 문제를 해결하기 위해 네이티브 API를 사용하여 전체 화면 모드로 표시할 때 WS_BORDER
속성을 활성화할 수 있습니다. 이 방법은 다음과 같이 활용할 수 있습니다:
bool Widget::event(QEvent *e) { #if defined(Q_OS_WIN) if (e->type() == QEvent::WinIdChange) { if (windowHandle()) { HWND handle = reinterpret_cast<HWND>(windowHandle()->winId()); SetWindowLongPtr(handle, GWL_STYLE, GetWindowLongPtr(handle, GWL_STYLE) | WS_BORDER); } } #endif return QWidget::event(e); }
이렇게 하면 전체 화면 창에 1픽셀 테두리가 생기므로 다른 최상위 창이 상단에 표시될 수 있습니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.