2014-02-12 5 views
1

여러 기사를 읽었지만 여전히 작동하지 않습니다 !!QPixmap에서 이미지를로드하여 QLabel에 표시하는 방법

나는 제대로하고 있지만, 어떤 이유로 그것은 작동하지 않는다는 것을 안다.

myIcon = new QLabel(); 
    QPixmap myPixmapForNow; 
    if(!myPixmapForNow.load(":/img/Interrogation.png")){ 
     qWarning("Failed to load"); 
    } 
    myIcon->setPixmap(myPixmapForNow); 

그것은 파일이 각 시간을로드하지 못했습니다 것을 저에게 말한다 :

여기 내 코드입니다.

내가하고 싶은 것은 도구 설명이있는 이미지를 표시하고 옆에있는 버튼의 기능을 설명하는 것입니다. 기본적으로 툴팁이 프로그래밍 된 이미지를 표시하는 방법을 찾고 있습니다.

저는 초보자입니다. 솔직히 말해서 폴더를 찾는 개념은 저에게 다소 추상적입니다. 블로그 나 제안 할 내용이 있다면 그것을 읽을 의향이 있습니다. 나는 하나를 찾고 있었고 나는 개념을 설명하고 그것을 어떻게하는지 좋은 것을 발견하지 못했습니다.

내 문제에 대한 해결책이 있다면 설명해주십시오.

감사

답변

0

두 가지 설명 :보다 더 아무것도 할 수 없습니다 : 해당 자원을 열고 읽을 수

  1. 확인 QFile합니다. 디스크의 파일로 덤프하십시오.

    QFile fi(":/img/Interrogation.png"); 
    QFile fo(QDir::homePath() + QDir::separator() + "Interrogation.png"); 
    if (!fi.open(QIODevice::ReadOnly)) { 
        qWarning() << "Can't open the resource" << fi.fileName(); 
        return; 
    } 
    if (!fo.open(QIODevice::WriteOnly)) { 
        qWarning() << "Can't open the output" << fo.fileName(); 
        return; 
    } 
    fo.write(fi.readAll()); 
    
  2. 확인은 어떤의 형식은 유효한 PNG 파일의 수 있도록 디스크에 덤프됩니다. 예를 들어 이미지 편집기에서 열 수 있습니다. 확장 프로그램이 내용과 일치하는지 확인하십시오. .png 확장자를 가진 유효한 JPEG 파일을로드하지 못합니다.

0

나는 당신의 오류를 재현했습니다. 아마도 QtCreator가 보통 "/new/prefix1/"으로 설정하는 리소스의 기본 접두사가 누락되었을 수 있습니다. 이 문자열 접두사는 액세스 자원으로 인해 존재해야합니다. 다음과 같은 방법으로 코드를 수정하십시오.

if(!myPixmapForNow.load(":/new/prefix1/img/Interrogation.png")){ 

또는 올바른 접두사 문자열을 찾으려면 리소스 파일을 찾아야합니다. 이미 접두어 문자열을 수정 한 경우 해당 코드를 수정하십시오.

관련 문제