【发布时间】:2015-10-09 21:41:49
【问题描述】:
一般来说,我一直在寻找一段时间,找不到一个认真的答案。问题是我有一个包含某些 url 的 QString 变量,例如“C:/用户/我/桌面/image.png”。如何打开它并在我的应用程序窗口中显示图像? 我知道这个问题可能看起来微不足道,但是我找不到可行的解决方案。
【问题讨论】:
一般来说,我一直在寻找一段时间,找不到一个认真的答案。问题是我有一个包含某些 url 的 QString 变量,例如“C:/用户/我/桌面/image.png”。如何打开它并在我的应用程序窗口中显示图像? 我知道这个问题可能看起来微不足道,但是我找不到可行的解决方案。
【问题讨论】:
使用QPixmap加载图片,然后使用QLabel显示:
QString url = R"(C:/Users/Me/Desktop/image.png)";
QPixmap img(url);
QLabel *label = new QLabel(this);
label->setPixmap(img);
【讨论】:
QString,所以您不需要这一行。我刚刚写了它是为了清楚url 在我的sn-p 中来自哪里。如果您不想阅读手册,那么您的程序中总会出现不可预知的行为(对您自己而言)。你最好阅读所有内容。编程需要很多知识。虽然您可以使用一些手册编写代码,但如果您不深入了解理论及其实际工作原理,您永远不会知道明天会有什么东西对您有用。
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();
}
【讨论】: