2009-10-02 5 views
9

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는의 일부입니다, 그래서 당신은 플러그인으로 추가 할 필요가 없습니다 :

답변

1

documentation에 따르면, SVG 아이콘을로드하는 방법입니다. SVG 지원으로 컴파일하는 데 필요한 유일한 것은 :

QT += svg 
+0

:

여기에 설명서를 참조하십시오. 그러나 아이콘이 다릅니다. QIcon docs (http://doc.trolltech.com/4.5/qicon.html)에서는 svg 아이콘 엔진을 사용하여 SVG 이미지를 QIcons로 직접로드 할 수 있음을 알립니다. 다른 사람들도 정적 컨텍스트가 아닌이 작업 (http://lists.trolltech.com/qt-interest/2008-07/thread00105-0.html)을 가지고 있습니다. – Thomi

+0

죄송합니다. 위의 의견이 모호하다는 것을 알았습니다. 첫 번째 문장의 "응용 프로그램"은 "응용 프로그램"의 경우가 아니라 "사용"의 의미입니다. – Thomi