2014-07-01 2 views
1

지난 몇 시간 동안 QAction의 아이콘 표시 문제를 해결하려고합니다.
문제는 아이콘이 표시되지 않으며 '도로'위치에 텍스트 암호 해독 만 적용된다는 것입니다.
항상 디버그를 시도했습니다. QPixmap이 NULL 인 경우 파일을 찾을 수없는 것처럼 보입니다.QAction이 Pixmap의 아이콘을 표시하지 않습니다.


여기에 내 코드처럼 보이는 방법은 다음과 같습니다

QPixmap icon(":/road.png"); 
QAction *A1 = new QAction(icon,"Road...", 0); 
A1->setIconVisibleInMenu(true); 
A1->setVisible(true); 
connect(A1, SIGNAL(triggered()), SLOT(triggeredA1())); 

나는 this article을 읽었습니다. 나는 하위 디렉터리 '입술'을 만들어 거기에 배치 한 src 디렉토리에서

RESOURCES = ./res/icons.qrc 

내 아이콘 :

-src 
    --res 
     road.png 
     load.gif 
     done.gif 

방법은 다음과 같습니다 내 아이콘의 는에 따르면 나는 추가 라인으로 내 프로 파일을 변경했습니다 .qrc 파일과 같이 보인다 :

<RCC> 
    <qresource prefix="/"> 
     <file>road.png</file> 
     <file>done.gif</file> 
     <file>load.gif</file> 
    </qresource> 
</RCC> 

후에도 모든 조작 QPixmap 여전히 NULL. 내가 뭘 잘못하고 있니?

내가 사용 :

+3

흠, 파일 이름은'roads.png'이지만'road.png'라고합니다? .qrc 파일이있는 디렉토리와 같은 디렉토리에 이미지 파일을 넣으십시오. – vahancho

+0

@vahancho, 그냥 오타이긴하지만 고마워요 :) – tema

+1

** 이미지를 열 수 있는지 여부를 확인하십시오. 예를 들어'QPixmap icon ("path_to_the_image_file"); bool b = icon.isNull();'. 가능한 경우 문제는 리소스 파일과 관련됩니다. – vahancho

답변

1

처럼 픽스맵 사용 OS X과 MacPorts로 Qt4를 만들었습니다. 어떤 이유로 libpng은 MacPorts에서 제공하는 빌드에는 포함되어 있지 않습니다.

sudo port install libpng 

을이 당신이 .png를 사용할 수있는 단계 후 .PRO 파일에

LIBS += -lpng 

을 다음 줄을 추가하여 프로젝트에이 lib 디렉토리를 포함 그래서,이 솔루션은 수동으로 MacPorts를 통해의 libpng를 구축하는 것입니다 위에서 작성한대로 프로젝트의 파일

0

당신은 별칭과 상대 "의사 경로"를 사용할 수 있습니다

예를

<qresource prefix="/images"> 
    <file alias="foobar">resources/images/foobar.png</file> 
</qresource> 

다음 그래서 솔루션

<pixmap resource="path/to/resourcefile.qrc">:/images/foobar</pixmap>