【问题标题】:How to load an image from a file in Qt?如何从 Qt 中的文件加载图像?
【发布时间】:2015-10-09 21:41:49
【问题描述】:

一般来说,我一直在寻找一段时间,找不到一个认真的答案。问题是我有一个包含某些 url 的 QString 变量,例如“C:/用户/我/桌面/image.png”。如何打开它并在我的应用程序窗口中显示图像? 我知道这个问题可能看起来微不足道,但是我找不到可行的解决方案。

【问题讨论】:

    标签: c++ image qt set


    【解决方案1】:

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

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

    ImageViewer example

    【讨论】:

    • 它是一个原始字符串(在 c++11 中引入)。不要关注它,因为您已经有一个带有 url 的 QString,所以您不需要这一行。我刚刚写了它是为了清楚url 在我的sn-p 中来自哪里。如果您不想阅读手册,那么您的程序中总会出现不可预知的行为(对您自己而言)。你最好阅读所有内容。编程需要很多知识。虽然您可以使用一些手册编写代码,但如果您不深入了解理论及其实际工作原理,您永远不会知道明天会有什么东西对您有用。
    【解决方案2】:
    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();
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多