Qt / C ++ QImage иногда файл не загружается.Но файл доступен - PullRequest
0 голосов
/ 04 октября 2018

В нашем приложении C ++ / Qt4.8 мы используем QImage для добавления изображений в наши документы, которые мы печатаем.Иногда у нас возникают проблемы с печатью изображения, и изображение будет распечатано пустым (просто пустая страница).

Мы добавили вход в наше приложение и добавили журнал аудита в нашу папку ресурсов, где находятся изображения.

Мы инициализируем наш образ таким образом.И передайте его в качестве аргумента mPainter (экземпляр QPainter)

QImage image( strImage );
mPainter.drawImage( QRect( 0, 0, pageRect().width(), pageRect().height() ), image );

Функция drawImage mPainter вызовет следующую функцию QPainter:

inline void QPainter::drawImage(const QRect &r, const QImage &image)
{
    drawImage(r, image, QRectF(0, 0, image.width(), image.height()));
}

Аудит окон показывает, что приложениеуспешно попытался получить доступ к файлам.

Но иногда следующий код возвращает false и переходит в другое:

QImage* imageToPrint = new QImage;
if (imageToPrint->load("C:/ApplicationName/Resources/page-001.jpg"))
{
    //fuction body 
} 
else 
{
    if (QFile::exists("C:/ApplicationName/Resources/page-001-copy.jpg"))
    {
        //Copy the image and try to print with this one.
        QFile::copy("C:/ApplicationName/Resources/page-001-copy.jpg", "C:/ApplicationName/Resources/page-001-unixtimestamp.jpg");
        printImage("C:/ApplicationName/Resources/page-001-unixtimestamp.jpg");
        QFile::remove("C:/ApplicationName/Resources/page-001-unixtimestamp.jpg");
    } 
}

Самое странное, что приложение может получать доступ, копировать и удалять файлы в каталоге.Но иногда не могу прочитать данные из файла.Даже вновь созданная копия с меткой unixtime не может быть загружена (но существует после кода) и напечатает пустую страницу.

У кого-нибудь есть такая проблема?У кого-нибудь есть решение для этого?

Заранее спасибо!

...