0
내 공유 라이브러리의 메소드 중 하나에서 QMessageBox를 호출하려고합니다.하지만이를 수행하려고 할 때 "QWidget : QWidget보다 먼저 QApplication을 생성해야합니다"라는 메시지가 나타납니다. 그러나 공유 라이브러리에서 QApplication을 생성 할 수 없으므로 어떻게이 문제를 해결할 수 있습니까?DLL에서 QT 위젯 사용
내 공유 라이브러리의 메소드 중 하나에서 QMessageBox를 호출하려고합니다.하지만이를 수행하려고 할 때 "QWidget : QWidget보다 먼저 QApplication을 생성해야합니다"라는 메시지가 나타납니다. 그러나 공유 라이브러리에서 QApplication을 생성 할 수 없으므로 어떻게이 문제를 해결할 수 있습니까?DLL에서 QT 위젯 사용
공유 라이브러리 내에서 QMessageBox (또는 다른 GUI 위젯)를 만들지 마십시오. GUI가 아닌 응용 프로그램에서 라이브러리를 사용한 경우 어떻게됩니까?
공유 라이브러리에서 자주 사용하는 솔루션은 신호/슬롯 시스템을 사용하고 QApplication이 결과를 화면에 표시하는 방법을 관리 할 수 있도록하여 신호를 내 보내어 슬롯 내에서 슬롯에 연결하는 것입니다 QMessageBox를 표시하는 응용 프로그램입니다.
일반적으로 QApplication의 인스턴스를 인스턴스화 한 다음 exec()를 호출하여 GUI UI 스레드 (기본 이벤트 루프)를 실행해야합니다. 이것은 http://stackoverflow.com/questions/2150488/using-a-qt-based-dll-in-a-non-qt-application과 비슷한 형태의 복제물처럼 들립니다. 질문에 대한 답변은 조금 오래되었습니다 (2010). Qt 5.xx.xx 이상에서 좀 더 연구해야합니다. – Huy
QApplication을 라이브러리에 구성 할 수없는 이유는 무엇입니까? –
@DmitrySazonov : 라이브러리는 대개 QApplication 컨텍스트에 포함되므로 QApplication 컨텍스트가 없어야합니다. –