1
我試圖從網站的favicon.ico文件創建一個QIcon對象。由於此下載不一定發生在GUI線程上,因此我無法使用QPixmap,到目前爲止,我還沒有計算出如何在不使用QPixmap的情況下從QImage轉換爲QIcon,所以我不能使用像QImageReader這樣的東西。將favicon.ico轉換爲QIcon而不使用QPixmap
我已經得到了下面的代碼工作:
QUrl url("http://www.google.com/favicon.ico");
QNetworkRequest request(url);
QNetworkReply* pReply = manager.get(request);
// ... code to wait for the reply ...
QByteArray bytes(pReply->readAll());
QFile file("C:/favicon.ico");
file.open(QIODevice::WriteOnly);
file.write(bytes);
file.close();
QIcon icon("C:/favicon.ico");
return icon;
不過,我想避免編寫一個臨時文件。所以我嘗試了類似...
QBuffer buffer(&bytes);
buffer.open(QIODevice::ReadOnly);
QDataStream ds(&buffer);
QIcon icon;
ds >> icon;
但這並不奏效。
有沒有人有任何建議?
它是如何工作的?你有運行時錯誤嗎?如果是這樣,那麼錯誤是什麼。 –
沒有運行時錯誤。我在QTreeView中使用返回的QIcon,添加一個QStandardItem並將圖標傳遞給我創建的項目。正如我所提到的,當我將QByteArray寫入臨時文件然後使用該文件初始化QIcon時,這會起作用。當我使用QDataStream方法時,沒有圖標顯示在樹中。 – Addy