gpt4 book ai didi

c++ - 来自幻灯片演示的 Qt Widget 绘画

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:13 27 4
gpt4 key购买 nike

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

单步执行Qt creator中的代码,当前ImagePath在监 window 口中为'"/home/tim/Pictures/HPIM0406.JPG"'。路径是正确的,包括大小写和/分隔符。 'slide' 变量始终显示

在代码中 slideSize = slide.size() 的位置,幻灯片大小从 (8481696,0) 变为 (0,0)。看起来虽然没有抛出任何错误,但是 QPixmap slide (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\\图片\\HPIM0406.JPG。一些评论:你写了 '"/home/tim/Pictures/HPIM0406.JPG"', '' - 在 QPixmap 构造函数中不使用单引号。我不明白,你只是写在这里或你的代码中。

希望对你有帮助:)

关于c++ - 来自幻灯片演示的 Qt Widget 绘画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com