J'ai un QGraphicsView, en ce sens que j'ai un QGraphicsScene, en ce sens que j'ai un QLabel et que j'ai défini une image .png comme QPixmap dans le QLabel. Le fichier .png est défini dans le fichier de ressources background.qrc. La taille de mon QLabel est 600x400. Sans le pixmap c'est bon, la taille de QGraphicsScene est aussi de 600x400. Mais quand je mets le pixmap au QLabel et le redimensionne, il échoue. La taille de QLabel est la même, le pixmap est bien mis à l'échelle dans le QLabel et seulement visible à l'intérieur, mais QGraphicsScene adopte la taille réelle du QPixmap, qui est 720x720. Ainsi, le QLabel est visible avec la QPixmap dans sa taille correcte, mais il y a un endroit gris autour de lui, puisque la scène est plus grande. Comment puis-je résoudre ce problème et le faire fonctionner? Je veux que QGraphicScene reste sur la taille du QLabel.QT QGraphicsScene avec QLabel et QPixmap
Voici le code:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QLabel>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsView *myView = new QGraphicsView(this);
QGraphicsScene *myScene= new QGraphicsScene();
QLabel *myLabel= new QLabel();
myLabel->setBaseSize(QSize(600, 400));
myLabel->resize(myLabel->baseSize());
myLabel->setScaledContents(true);
QPixmap pixmapBackground(":/new/cross.png");
myLabel->setPixmap(pixmapBackground);
myScene->addWidget(myLabel);
myView->setScene(myScene);
setCentralWidget(myView);
}
MainWindow::~MainWindow()
{
delete ui;
}
Pourquoi n'utilisez-vous pas 'QGraphicsPixmapItem' à la place? Il est plus léger et facile à contrôler. – ilotXXI
Ça ne marche pas pour moi. Je dois le faire avec un QLabel et un QPixmap. – Alex
@Alex Et que voulez-vous dire par "ne pas travailler pour vous"? Peut-être que nous pouvons résoudre ce problème. – Tomas