我正在開發一個項目,使用Qt 4.8.3作爲ARM平臺。在我的項目中,我使用了QGraphicsItems
......其中之一是QGraphicsPixmapItem
的一個子類。QPixmap :: load()crash - 試圖避免它
該代碼已用32位位圖圖像進行測試 - 並且崩潰。
不僅在ARM上運行崩潰,而且在QVFB中運行。
QPixmap p;
if (!p.load(filename)) // crashes here
return false;
我試圖用try ... catch來包圍它,但它沒有幫助。
我似乎無法步入此版本的Qt代碼......但崩潰發生在QImageReader::read(QImage*)
內部。
堆棧跟蹤:
QImageReader::read(QImage*)
QImageReader::read()
QPixmapData::fromFile(QString const&*, QFlags<QT::ImageConversionFlag>)
QPixmap::load(QString const&, char const*, QFlags<QT::ImageConversionFlag>)
QPixmapItem::loadItemFromFile // mine, the code above
任何其他類型的圖像作品...和相同的32位位圖正確加載在Windows中,同樣的Qt版本。它無法加載(返回false)在相同的Qt版本,爲桌面。
我很樂意排除這種類型的文件 - 但我不知道如何。
有沒有什麼辦法來檢查圖像類型而不加載圖像並避免崩潰?
有沒有辦法可能只加載圖像頭,並驗證其類型?
嘗試將圖像格式和ImageConversionFlags的各種組合作爲參數進行調用。 –
@MichaelO。我試圖嘗試...但我必須能夠讀取所有類型的圖像文件,不能限制爲單一類型。設置除「BMP」之外的任何內容都會返回false - 因爲在嘗試讀取之前圖像類型可能會失敗 - 但我必須能夠讀取位圖和其他所有類型的文件。我只想排除32位位圖。 – Thalia