J'essaie d'exécuter du code légèrement modifié à partir de la démo QL fluidLauncher qui montre un diaporama. Le code est collé ci-dessous. Lorsque l'événement paintEvent est traité, un rectangle noir est affiché à l'écran car la taille de l'image importée est 0.Qt Widget Peinture à partir de la démo du diaporama
En passant par le code dans le créateur Qt, currentImagePath est '"/home/tim/Pictures/HPIM0406.JPG" 'dans la fenêtre de la montre. Le chemin est correct, y compris le cas et/diviseurs. La variable 'slide' montre toujours < non accessible >.
Au point du code où slideSize = slide.size() la taille de la diapositive passe de (8481696,0) à (0,0). Il semble que même si aucune erreur n'est levée, la diapositive QPixmap (currentImagePath); ne récupère pas l'image.
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);
}
J'ai eu du mal avec le problème pour la plupart de la soirée. Quelqu'un peut-il suggérer du code supplémentaire que je pourrais ajouter pour le débogage ou laissez-moi savoir ce qui pourrait ne pas fonctionner avec ce code?