이 페이지에서

자주 묻는 질문

Qt Creator 에 관한 자주 묻는 질문에 대한 답변입니다.

'알려진 문제 ' 및 '사용 방법' 섹션이나, '디버깅'과 같은 특정 영역에 대한 '문제 해결' 섹션에서도 궁금한 사항에 대한 답을 찾을 수 있습니다.

일반적인 질문

Qt Creator MinGW가 함께 제공되는데, Qt와 함께 이 버전을 사용해야 하나요?

Qt 버전에 맞춰 빌드된 버전을 사용하십시오.

Qt Creator Git, Ninja 또는 컴파일러와 같은 보조 애플리케이션을 찾을 수 없습니다. 어떻게 해야 합니까?

Qt Creator 를 시작할 때 해당 애플리케이션이 시스템 PATH에 있는지 확인하십시오. 또한 ‘ Preferences ’를 선택하여 애플리케이션에 지정된 설정을 확인하십시오. 많은 플러그인은 필요한 도구의 경로나 실행 환경을 지정합니다.

또한 ‘환경 설정 편집’에 설명된 대로, 도구를 찾고 실행할 환경을 전역적으로 또는 특정 프로젝트나 키트에 대해 지정할 수도 있습니다.

이는 터미널 애플리케이션이 아닌 바탕화면에서 Qt Creator 를 시작할 때 특히 중요합니다. 예를 들어 macOS의 Finder, Dock, Spotlight나 Gnome의 Dock, Dash, 활동 개요 등에서 실행하는 경우입니다. 이 경우, 시작된 애플리케이션은 셸(터미널 애플리케이션이 사용하는)을 위해 설정된 환경을 상속받지 않고, 대신 launchd (macOS) 또는 gnome-shell (Gnome)에서 환경을 상속받습니다. 즉, macOS의 Homebrew용 /usr/local/bin 이나 /opt/homebrew/bin 과 같이 터미널용으로 설정해 둔 경로는, 데스크탑에서 Qt Creator 을 실행한 경우 자동으로 사용할 수 없습니다.

보고된 문제가 해결되었나요?

Qt 프로젝트 버그 트래커에서 모든 이슈를 조회할 수 있습니다.

Qt Widgets Designer 통합 관련 질문

독립 실행형 Qt Widgets Designer 에서는 작동하는데, Design 모드에서는 사용자 정의 위젯이 로드되지 않는 이유는 무엇입니까?

Qt Widgets Designer Qt Widgets Designer 는 표준 위치에서 플러그인을 가져와 빌드 키와 일치하는 플러그인을 로드합니다. 독립 실행형 와 통합형 의 위치가 다릅니다.

자세한 내용은 Qt Widgets Designer 플러그인 추가’를 참조하십시오.

QML 및 Qt Quick 관련 질문

모듈이 있는데도 QML 임포트 아래에 빨간 선이 표시되는 이유는 무엇입니까?

기본적으로 Qt Creator 는 QML 모듈의 경우 Qt의 Qml 임포트 경로를 검색합니다. 때로는 경로를 올바르게 파악하지 못할 수 있으므로 모듈이 있는 위치를 직접 지정해야 할 수도 있습니다. qmake를 빌드 시스템으로 사용하는 경우, 애플리케이션의 .pro 파일에 QML_IMPORT_PATH 를 지정하십시오. CMake를 사용하는 경우, CMakeLists.txt 파일에 set 명령을 추가하십시오.

이렇게 하면 QML 코드의 코드 완성 기능도 활성화되고 오류 메시지가 사라집니다.

다음 예제는 서로 다른 대상 플랫폼에 대한 빌드 키트와 실행 키트 간을 전환할 때 정상적으로 작동하도록 qmake 프로젝트의 가져오기 경로를 지정하는 방법을 보여줍니다.

TEMPNAME = $${QMAKE_QMAKE}
MY_QTPATH = $$dirname(TEMPNAME)
QML_IMPORT_PATH += $$MY_QTPATH/../qml
message("my QML Import Path: "$$QML_IMPORT_PATH)

CMake 프로젝트의 임포트 경로를 설정하는 방법에 대한 자세한 내용은 QML 모듈 임포트를 참조하십시오.

Qt Creator 에서 OpenGL 지원이 누락되었다는 오류 메시지가 표시되면 어떻게 해야 합니까?

' Qt Creator'의 일부 기능(예: QML Profiler)은 렌더링에 OpenGL API를 사용하는 ' Qt Quick 2'를 활용합니다. 안타깝게도 OpenGL 사용은 특히 원격 환경이나 구형 드라이버를 사용할 때 문제를 일으킬 수 있습니다. 이러한 경우, ' Qt Creator '는 콘솔에 OpenGL 관련 오류 메시지를 표시하거나 Windows 디버거 로그에 기록합니다.

해결 방법과 우회 방법은 사용자의 환경에 따라 다릅니다. 최후의 수단으로, 문제가 발생하는 플러그인을 비활성화할 수 있습니다.

가상 머신

가상 머신 설정에서 3D 가속을 활성화해 보십시오. VirtualBox의 경우, 실험적인 Direct3D 지원을 포함한 게스트 애드온(Guest Addons)이 설치되어 있는지 확인하십시오.

Windows

기본적으로 Qt Quick 는 Direct3D 11을 사용합니다. 문제가 발생하면 그래픽 드라이버를 업데이트하거나 DirectX 버전을 업데이트해 보십시오. dxdiag.exe 를 실행하여 Direct3D 가속이 실제로 활성화되어 있는지 확인하십시오.

또한 QSG_RHI_BACKEND 환경 변수를 vulkan 또는 opengl 로 설정해 볼 수도 있습니다. 자세한 내용은 Qt for Windows - 그래픽 가속을 참조하십시오.

유닉스

glxgears 를 실행하여 OpenGL이 전반적으로 작동하는지 빠르게 확인해 보세요. glxinfo 의 출력 결과를 확인하여 OpenGL 드라이버 및 렌더러와 같은 자세한 정보를 확인하세요(애플리케이션 출력에서 'OpenGL'을 검색해 보세요).

Mesa 드라이버를 사용하는 경우, LIBGL_ALWAYS_SOFTWARE 환경 변수를 설정하여 OpenGL이 소프트웨어 방식으로 렌더링되도록 강제할 수 있습니다.

플러그인 비활성화

Qt Creator 플러그인을 비활성화할 수 있지만, 이 경우 일부 기능이 제한됩니다:

  • 명령줄에서 ` -noload QmlProfiler -noload QmlDesigner ` 인수를 지정하여 ` Qt Creator `을 실행합니다.
  • Help > About Plugins 을 선택하여 플러그인을 영구적으로 비활성화합니다.

도움말 관련 질문

Qt API 참조 문서가 누락되었고, 컨텍스트 도움말에서 주제를 찾을 수 없습니다. 어떻게 해야 하나요?

다음 명령을 사용하여 Qt 버전과 Qt 문서를 설치하십시오. Qt Online Installer.

설치된 문서(.qch 파일)를 보고 문서를 추가하려면 Preferences > Help > Documentation 로 이동하십시오. 자세한 내용은 외부 문서 추가를 참조하십시오.

디버거 관련 질문

디버거 문제 해결에 대한 정보는 ‘디버거 문제 해결’을 참조하십시오.

GDB 버전을 선택할 수 있다면 어떤 버전을 사용해야 합니까?

Linux 및 Windows에서는 Qt Creator 와 Qt를 설치할 때 함께 설치되는 Python 지원 GDB 버전을 사용하십시오. macOS에서는 GDB가 더 이상 공식적으로 지원되지 않습니다. 직접 Python 지원 GDB를 빌드하려면 QtCreator Build Gdb의 지침을 따르십시오.

Python 버전 2.6 또는 2.7을 사용해야 합니다.

자세한 내용은 ‘지원되는 디버거’를 참조하십시오.

Qt Creator 에서 코어 파일을 생성하려면 어떻게 해야 하나요?

디버깅 중에 코어 파일을 생성하는 GDB 명령을 실행하려면, ‘ View ’ > ‘ Views ’ > ‘Debugger Log’로 이동하십시오. ‘ Command ’ 필드에 ‘ gcore ’를 입력하고 ‘Enter’를 선택하십시오. 코어 파일은 현재 작업 디렉터리에 생성됩니다. 명령의 인수로 상대 경로나 절대 경로를 포함하여 파일의 다른 위치를 지정할 수도 있습니다.

컴파일러 관련 질문

Qt Creator 에서 멀티코어 CPU를 활용하려면 어떻게 해야 합니까?

Linux 및 macOS에서는 Projects 모드로 이동하여, ' Build Settings'에서 구성 항목을 선택하고, ' Build Steps'를 찾아 다음 값을 추가하십시오. 여기서 <num> 는 CPU의 코어 수입니다: -j <num>

Windows에서는 nmake가 -j 매개변수를 지원하지 않습니다. 대신 jom을 사용할 수 있습니다. Qt 다운로드 페이지 (jom)에서 jom의 사전 컴파일된 버전을 다운로드할 수 있습니다. jom.exe 파일을 %PATH%에 포함된 위치에 배치하십시오. Build Settings 로 이동하여 make 명령어로 jom.exe 를 설정하십시오.

참고: GNU make와달리 , jom은 코어 수를 자동으로 감지하여 CPU 코어 수만큼 병렬 프로세스를 생성합니다. 위에서 설명한 대로 -j 매개변수를 사용하여 이 동작을 재정의할 수 있습니다.

Qt 설치 관련 질문

바이너리 패키지로 설치한 Qt에서는 QSslSocket을 사용할 수 없습니다. 어떻게 해야 하나요?

바이너리 패키지의 Qt는 QT_NO_OPENSSL이 정의된 상태로 빌드됩니다. 재빌드하는 것이 가능합니다. 자세한 내용은 Qt Centre: QSsl을 참조하십시오.

Ubuntu나 Debian에서 배포판의 어떤 개발 패키지가 필요한가요?

sudo apt-get install libglib2.0-dev libsm-dev libxrender-dev libfontconfig1-dev libxext-dev

QtOpenGL을 사용하는 경우 다음도 필요합니다:

sudo apt-get install libgl-dev libglu-dev

Qt Creator 에서 애플리케이션 출력은 어디에 표시되나요?

유닉스(Linux 및 macOS)의 경우: ` qDebug() ` 및 관련 함수는 표준 출력 및 오류 출력을 사용합니다. 애플리케이션을 실행하거나 디버깅할 때 ‘Application Output’에서 출력을 확인할 수 있습니다.

입력이 필요한 콘솔 애플리케이션의 경우, ‘ Projects ’ > ‘ Run Settings ’ > ‘ Run in terminal ’을 선택하십시오. 사용할 터미널을 지정하려면 ‘ Preferences ’ > ‘ Environment ’ > ‘ System ’을 선택하십시오. 내장 터미널을 사용하려면 ‘ Preferences ’ > ‘ Terminal ’ > ‘ Use internal terminal ’을 선택하십시오.

Windows의 경우: 콘솔 애플리케이션GUI 애플리케이션에 따라 출력 방식이 다릅니다.

qmake 프로젝트의 경우, .pro 파일의 CONFIG += console 설정은 애플리케이션이 다른 런타임을 사용하여 콘솔 애플리케이션으로 빌드되도록 지정합니다.

이는 CMake 프로젝트의 표준 동작입니다. Windows에서 GUI 애플리케이션을 만들거나 macOS에서 애플리케이션 번들을 만들려면, CMakeLists.txt 파일의 qt_add_executable 명령에 대해 WIN32 또는 MACOSX_BUNDLE 속성을 지정해야 합니다.

콘솔 애플리케이션을 실행하면 호출하는 애플리케이션의 콘솔 창에서 출력을 확인할 수 있습니다. 호출하는 애플리케이션이 GUI 애플리케이션(예: Qt Creator 의 릴리스 빌드 버전)인 경우, 새로운 콘솔 창이 열립니다. 이러한 유형의 애플리케이션에 대해 qDebug() 및 관련 함수는 표준 출력 및 오류 출력을 사용합니다.

콘솔 애플리케이션의 경우 Projects > Run Settings > Run in terminal 를 선택하는 것이 좋습니다.

GUI 애플리케이션의 경우, ` qDebug() ` 및 관련 함수는 Windows API 함수인 ` OutputDebugString()`을 사용합니다. 출력은 ` Application Output`에 표시됩니다. 그러나 ` Qt Creator `은 출력을 올바르게 표시하기 위해 한 번에 하나의 소스에서만 출력을 표시할 수 있습니다. GUI 애플리케이션의 출력을 표시하려면 Windows용 DebugView와 같은 외부 디버그 출력 뷰어를 사용할 수 있습니다.

신규 기능에 대한 질문

요청한 기능이 구현될 예정인가요?

예정된 기능인 경우, 작업 추적기에서 확인할 수 있습니다. 기능이 이미 구현된 경우, 다음 릴리스의 변경 내역 파일에 언급되어 있습니다.

Qt Creator 가 기본적으로 편집기에 탭을 사용하지 않는 이유는 무엇입니까?

기본적으로 탭을 사용하지 않는 주된 이유는 다음과 같습니다.

  • 탭은 확장성이 떨어집니다. 편집기를 5~6개 정도 열어두면 문제없이 작동하지만, 10개가 되면 다루기 번거로워지며, 탭 바보다 더 넓은 가로 공간이 필요한 경우 인터페이스가 전혀 작동하지 않습니다.
  • 탭은 사용자의 작업 세트에 맞춰 조정되지 않습니다.
  • 일반적인 해결책은 사용자에게 탭 순서를 재정렬할 수 있는 기능을 제공하는 것입니다. 그러면 사용자는 코드를 작성하는 대신 탭을 관리해야만 합니다.
  • 탭은 혼란을 피하기 위해 열려 있는 편집기의 수를 제한하도록 강요합니다.

다음과 같은 사용 사례를 생각해 보십시오. 개발자는 편집기를 전환하고 싶어 합니다.

사실 개발자들은 편집기를 전환하고 싶어 하는 것은 아니지만, 작업을 완료하기 위해 어쩔 수 없이 전환해야 할 수도 있습니다. 우리는 어떤 작업들이 있는지 파악하여, 개발자들이 작업을 수행하는 동안 더 나은 탐색 방법을 제공할 수 있어야 합니다.

많은 사용 사례에서 공통적으로 나타나는 요소는 열려 있는 파일들을 작업하는 도중에 편집기를 전환하는 것입니다. 파일 A와 B를 작업하는 동안, 사용자는 때때로 파일 C를 확인해야 할 필요가 있습니다. 사용자는 Ctrl+Tab을 눌러 파일 간을 이동할 수 있으며, 파일 유형에 따라 해당 파일이 올바른 편집기에서 열리게 됩니다. 목록은 마지막으로 사용한 순서대로 정렬됩니다.

일반적으로 사용자는 서로 다른 파일에 정의되거나 선언되어 있더라도, 서로 관련된 여러 클래스나 함수를 동시에 작업하기도 합니다. Qt Creator 에서는 이를 위해 두 가지 단축키를 제공합니다. F2는 커서 아래의 심볼을 추적하고, Ctrl+Shift+U는 해당 심볼에 대한 참조를 찾습니다.

또한 개발자는 다음을 수행할 수 있습니다:

  • F4 키를 눌러 헤더 파일과 소스 파일 간을 전환할 수 있습니다.
  • Alt+Left를 눌러 탐색 기록을 뒤로 이동할 수 있습니다.
  • 로케이터(Ctrl+K)를 사용하여 Qt Creator 에 이동할 위치를 간단히 지정할 수 있습니다.

로케이터를 사용하여 파일을 열 수 있지만, 파일을 여는 것은 작업을 완료하기 위한 과정 중 하나일 뿐입니다. 예를 들어, 다음과 같은 사용 사례를 생각해 보십시오: someclass.cpp/someclass.h에 있는 SomeClass의 AFunction을 수정합니다.

탭 기반 사용자 인터페이스를 사용하는 경우, 개발자는 탭 바에서 ` someclass.cpp `을 검색한 다음 ` ::AFunction`을 검색하겠지만, 해당 파일에 함수가 없다는 사실을 알게 될 것입니다. 그런 다음 탭 바에서 ` someclass.h `을 검색하여 함수가 인라인으로 정의되어 있음을 확인하고, 문제를 수정한 뒤 어디에서 왔는지 잊어버리게 될 것입니다.

Qt Creator 를 사용하면 개발자는 Ctrl+K m AFun 를 입력하여 해당 함수를 찾을 수 있습니다. 일반적으로 함수 이름의 3~4자만 입력하면 됩니다. 그런 다음 문제를 해결하고 Alt+Back을 눌러 원래 위치로 돌아갈 수 있습니다.

다른 로케이터 필터로는 클래스용 c, 모든 심볼용 :, 현재 파일 내 심볼용 . 등이 있습니다.

열려 있는 문서 간을 전환하는 또 다른 방법은 ‘ Open Documents ’ 보기에서 해당 문서를 선택하는 것입니다.

여전히 편집기에서 탭을 사용하려면, Preferences > Environment > Interface 로 이동한 다음, Use tabbed editors 를 선택하십시오.

Copyright © The Qt Company Ltd. and other contributors. 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.