繁体   English   中英

幻灯片演示中的Qt Widget Painting

[英]Qt Widget Painting from slideshow demo

我试图从显示幻灯片的Qt fluidLauncher演示中运行经过稍微修改的代码。 该代码粘贴在下面。 处理paintEvent时,屏幕上会显示一个黑色矩形,因为导入的图像大小为0。

单步浏览Qt创建器中的代码,在监视窗口中,currentImagePath是'“ /home/tim/Pictures/HPIM0406.JPG”'。 路径是正确的,包括大小写和/分隔符。 'slide'变量始终显示<notaccess>。

在代码中slideSize = slide.size()的位置,幻灯片大小从(8481696,0)变为(0,0)。 看起来尽管没有错误,但是QPixmap幻灯片(currentImagePath); 没有检索图像。

void SlideShow::paintEvent(QPaintEvent *event)
{
 QPainter painter(this);
 QString currentImagePath;

 painter.setRenderHint(QPainter::Antialiasing, false);

 if (d->imagePaths.size() > 0) {
    currentImagePath = d->imagePaths[d->currentSlide];
     QPixmap slide( currentImagePath );
     QSize slideSize = slide.size();
     QSize scaledSize = QSize(qMin(slideSize.width(), size().width()),
         qMin(slideSize.height(), size().height()));
     if (slideSize != scaledSize)
         slide = slide.scaled(scaledSize, Qt::KeepAspectRatio);

     QRect pixmapRect(qMax( (size().width() - slide.width())/2, 0),
                      qMax( (size().height() - slide.height())/2, 0),
                      slide.width(),
                      slide.height());

     if (pixmapRect.top() > 0) {
         // Fill in top & bottom rectangles:
         painter.fillRect(0, 0, size().width(), pixmapRect.top(), Qt::black);
         painter.fillRect(0, pixmapRect.bottom(), size().width(), size().height(), Qt::black);
     }

     if (pixmapRect.left() > 0) {
         // Fill in left & right rectangles:
         painter.fillRect(0, 0, pixmapRect.left(), size().height(), Qt::black);
         painter.fillRect(pixmapRect.right(), 0, size().width(), size().height(), Qt::black);
     }

     painter.drawPixmap(pixmapRect, slide);

 } else
     painter.fillRect(event->rect(), Qt::black);

}

整个晚上,我都为这个问题苦苦挣扎。 谁能建议我可以添加用于调试的其他代码,或者让我知道此代码可能有什么问题?

我有一些解决您的问题的想法:

  1. 您应该添加资源文件(.qrc)并将图像粘贴到该文件。 使用语法从资源文件加载像素图。

  2. 尝试粘贴分隔线, home/tim/Pictures/HPIM0406.JPG/home/tim/Pictures/HPIM0406.JPGhome\\\\tim\\\\Pictures\\\\HPIM0406.JPG 一些说明:您写了'“ /home/tim/Pictures/HPIM0406.JPG”',''-在QPixmap构造函数中不要使用单引号。 我不明白,您是在此处或在代码中编写的。

希望对您有所帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM