C++ 如何从Qt中的文件加载图像?

C++ 如何从Qt中的文件加载图像?,c++,image,qt,set,C++,Image,Qt,Set,一般来说,我已经搜索了一段时间,没有找到一个严肃的答案。问题是,我有一个QString变量,其中包含特定的url,例如C:/Users/Me/Desktop/image.png。如何打开它并在我的应用程序窗口中显示图像? 我知道这个问题可能看起来微不足道,但我找不到有效的解决方案。使用QPixmap加载图像,然后用QLabel显示: 使用QPixmap加载图像,然后使用QLabel显示图像: 它是c++11中引入的原始字符串。不要注意它,因为你已经有了一个带有url的QString,所以你不需要

一般来说,我已经搜索了一段时间,没有找到一个严肃的答案。问题是,我有一个QString变量,其中包含特定的url,例如C:/Users/Me/Desktop/image.png。如何打开它并在我的应用程序窗口中显示图像? 我知道这个问题可能看起来微不足道,但我找不到有效的解决方案。

使用QPixmap加载图像,然后用QLabel显示:

使用QPixmap加载图像,然后使用QLabel显示图像:


它是c++11中引入的原始字符串。不要注意它,因为你已经有了一个带有url的QString,所以你不需要这一行。我写这篇文章只是为了明确url在我的代码片段中的来源。如果您不想阅读手册,那么在您的程序中,您总是会遇到不可预测的行为。你最好什么都读。编程需要很多知识。虽然你可能会用一些手册来编写代码,但如果你不深入学习理论和它的实际工作原理,你永远不会知道明天会有什么东西对你有用。它是c++11中引入的原始字符串。不要注意它,因为你已经有了一个带有url的QString,所以你不需要这一行。我写这篇文章只是为了明确url在我的代码片段中的来源。如果您不想阅读手册,那么在您的程序中,您总是会遇到不可预测的行为。你最好什么都读。编程需要很多知识。虽然你可能会用一些手册来编写代码,但如果你不深入了解理论和它的实际工作原理,你永远不会知道明天会有什么东西对你有用。
QString url = R"(C:/Users/Me/Desktop/image.png)";
QPixmap img(url);
QLabel *label = new QLabel(this);
label->setPixmap(img);
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();
}