2012-10-16 3 views
0

QML의 목록보기에 표시 할 이미지 목록을 인터넷에서 가져 오려고합니다.Blackberry Cascades, QML & C++, QT의 목록보기에서 웹보기를 얻는 방법

"QUrl URL로 [정의]에 할당 할 수 없습니다"나는 ListItemData.imageSource 올바른 데이터를 포함 알고

ListView { 

    objectName: "imageListView" 

    listItemComponents: [ 

     ListItemComponent { 

      type: "item" 

      Container { 
       WebView { 
        url: ListItemData.imageSource 
       }  
      }       
     } 
    ] 
} 

문제는 이것은 단지 다음과 같은 오류가 발생합니다입니다 : I는 다음과 같습니다 코드를 왜냐하면 나는 WebView 대신 Label {text : ListItemData.imageSource}를 사용하여 테스트했기 때문에 필요한 모든 이미지 URL을 보여 주었기 때문입니다.

답변

0

확인 - 다른 해결책을 찾았습니다. 베타 2 SDK에서 베타 3 SDK로 업그레이드했습니다. ,

ListView { 
    id: imageListView 
objectName: "ImageListView"   

    listItemComponents: [ 
    ListItemComponent { 
     type: "item" 

     Container { 
      id: imagesRoot 
      objectName: "ImagesRoot" 

       ImageView { 
       image: ListItemData.image 
      } 
     } 
    } 
    ] 
} 
2

인터넷에서 이미지를로드하는 경우에도 ImageView 만 사용하는 것이 좋습니다.

먼저 QNetworkRequest, QNetworkAccessManager 및 QNetworkReply 클래스 &을 사용하여 네트워크 요청을 만들어 ImageView의 QByteArray에 대한 응답을로드하십시오. onReply() 슬롯이 같은 이미지를로드 할 수있는

QNetworkAccessManager* netManager = new QNetworkAccessManager(); 
if (netManager) { 

QUrl url(ImageUrl); 
QNetworkRequest networkRequest(url); 
QNetworkReply* networkReply = netManager->get(networkRequest); 
connect(networkReply, SIGNAL(finished()), this, SLOT(onReply())); 
} 

& :

void App::onReply(QNetworkReply* reply) { 
if (reply->error() != QNetworkReply::NoError) { 
    qDebug() << "Image not available or any error"; 
    return; 
} 

Image image = Image(reply->readAll()); 
imageView->setImage(image); 

} 

이미지가 너무 큰 경우, 당신은 imageData의 클래스에 이미지를로드 &의 방법이있을 수 있습니다 마십시오 캐스케이드 ImageView. setImage 메소드를 사용하여 직접 이미지를로드하지 않습니다. & ListView에서이 작업을하려면 자신 만의 CustomItem을 만들어야합니다. & ListItemProvider & 또한 해당 항목의 업데이트 방법 메서드를 재정의해야합니다. 희망이 도움이됩니다.

+0

감사합니다를 : 다음

#include <QObject> #include <bb/cascades/Image> class MyImageClass : public QObject, public bb::cascades::Image { Q_OBJECT Q_PROPERTY(bb::cascades::Image image READ image WRITE setImage NOTIFY imageChanged FINAL) //... bb::cascades::Image image_; public: //... bb::cascades::Image image() const {return image_;} void setImage(bb::cascades::Image image { image_ = image; emit imageChanged(); } signals: //... void imageSourceChanged(); } 

목록에 이미지를 삽입 할 때, 나는 단순히 사용 : 그럼 난 단순히 이런 짓을

groupDataModel_.insert(myImageObject); 

을 내 QML에서 내가 가진 하지만 ListItemProvider가 계단식 폴더에서 누락 된 것 같습니다. 이제 누락 된 클래스를 인터넷에서 다운로드 할 수있는 위치를 찾으려고합니다. 누구든지 올바른 방향으로 나를 가리킬 수 있다면, 감사하게 생각합니다. 감사합니다. – user1296259

+0

잘 ListItemProvider 클래스를 확장하고 C++에서 사용자 지정 공급자를 만들려면 –

+0

네, 고맙습니다, 이해 합니다만, #include 를 사용하여 ListItemProvider를 포함하려고 시도한 다음 그 위로 스크롤하십시오 # 내 마우스에 문을 넣으면 "Unresolved inclusion"이라고 표시되고 노란색으로 밑줄이 그어져 있고 컴파일하려고하면 ListItemProvider 파일이 존재하지 않는다는 오류 메시지가 표시됩니다. – user1296259

관련 문제