2015-07-20 2 views
-3

Вообще-то, я искал какое-то время и не мог найти серьезного ответа. Проблема в том, что у меня есть переменная QString, содержащая определенный URL-адрес, например. "C: /Users/Me/Desktop/image.png". Как открыть его и отобразить изображение в моем окне приложения? Я знаю, что проблема может показаться тривиальной, однако я не могу найти рабочего решения.Как загрузить изображение из файла в Qt?

ответ

6

Загрузите изображение с помощью QPixmap, а затем показать его с QLabel:

QString url = R"(C:/Users/Me/Desktop/image.png)"; 
QPixmap img(url); 
QLabel *label = new QLabel(this); 
label->setPixmap(img); 

ImageViewer example

P.S. Я действительно сомневаюсь, что вы пытались найти информацию об этом.

+2

Это необработанная строка (intocuded in C++ 11). Не обращайте на это внимание, поскольку у вас уже есть 'QString' с URL-адресом, поэтому вам не нужна эта строка. Я только что написал это, чтобы было ясно, где «url» происходит из моего фрагмента. Если вы не хотите читать руководства, вы всегда будете получать непредсказуемое поведение (для себя) в своей программе. Лучше все прочитайте. Программирование требует большого количества знаний. Хотя вы можете что-то кодировать с помощью какого-то руководства, вы никогда не узнаете, что завтра что-то будет работать для вас, если вы не пойдете глубже в теории и как это работает. –

+0

Ну, спасибо за эти слова в любом случае. –

+0

@Grzyboo, если этот ответ помог вам, примите его. –

0
void LoadAvatar(const std::string &strAvatarUrl, QLabel &lable) 
{ 
    QUrl url(QString().fromStdString(strAvatarUrl)); 
    QNetworkAccessManager manager; 
    QEventLoop loop; 

    QNetworkReply *reply = manager.get(QNetworkRequest(url)); 
    QObject::connect(reply, &QNetworkReply::finished, &loop, [&reply, &lable,&loop](){ 
    if (reply->error() == QNetworkReply::NoError) 
    { 
     QByteArray jpegData = reply->readAll(); 
     QPixmap pixmap; 
     pixmap.loadFromData(jpegData); 
     if (!pixmap.isNull()) 
     { 
      lable.clear(); 
      lable.setPixmap(pixmap); 
     } 
    } 
    loop.quit(); 
    }); 

    loop.exec(); 
} 
Смежные вопросы