QIcons에서 SVG 그래픽을 사용하려고합니다. 모든 그래픽 리소스를 포함하는 정적 라이브러리와 올바른 그래픽이 미리로드 된 QIcons를 반환하는 정적 라이브러리의 메서드가 있습니다. 나는이 작업을 수행하기 위해 노력하고있어 :Qt에 정적으로 링크 할 때 Qt 플러그인을로드 중입니까?
qDebug() << QDir(":/icons/").entryList();
그러나, SVG 아이콘이 표시되지 않는 :
QIcon icon(":/icons/find.svg");
나는 자원이 QDir으로 나열하여로드 된 것을 확인했습니다. 아이콘로드 코드를 다음과 같이 변경하면
QIcon icon(":/icons/find.png");
모두 올바르게 작동합니다.
문제는 SVG 플러그인이 절대로드되지 않는 것 같습니다.
("BMP", "PBM", "PGM", "PNG", "PPM", "XBM", "XPM은")
를 : 나는이 포함되어 지원되는 이미지 형식의 목록을 얻을 수 있습니다
그러나 SVG에 대한 언급이 없습니다.
정적 라이브러리 .pro 파일과 내 응용 프로그램 .pro 파일 모두에서 SVG 모듈을 사용하고 있는지 확인했습니다.
편집 :
그것은 문제가 내가 정적으로 QT에 연결하고, 따라서 플러그인은 모든 정적 libs와 것으로 보인다. QPluginLoader
에 대한 문서는 상태가 : 응용 프로그램이 정적으로 Qt는에 링크 경우 QPluginLoader가 을 사용할 수 없습니다
참고. 이 경우 도 플러그인 에 정적으로 링크해야합니다. 정적 라이브러리 응용 프로그램 에 동적 라이브러리를로드해야하는 경우 QLibrary를 사용할 수 있습니다.
그러나 이러한 플러그인에 정적으로 링크하는 것은 아무 것도하지 않는 것 같습니다 (지원되는 이미지 형식 목록은 커지지 않습니다).
Edit2가이 :
또한, (내 전체 응용 프로그램을 다시 작성 후) 동적으로 QT에 연결하는 것은 완벽하게 작동 위의 코드를합니다. 그러나 은 Qt에 정적으로 연결하려면을 필요로하므로 Qt에 정적으로 링크 할 때 Qt 플러그인을로드하는 것과 관련하여 궁금한 점이 많습니다. 이를 반영하기 위해 게시물 제목을 업데이트하겠습니다. 당신의 연결 문제에 대한
QSvgRenderer svgRenderer(":/icons/find.svg");
Q_ASSERT(svgRenderer.isValid());
QImage img(svgRenderer.defaultSize());
QPainter p(&img);
svgRenderer.render(&p);
p.end();
QIcon icon(QPixmap::fromImage(img));
이 QtSvg는 Qt는의 일부입니다, 그래서 당신은 플러그인으로 추가 할 필요가 없습니다 :
감사합니다. 완벽하게 작동합니다. – Thomi