Set an image for QGraphicsRectItem



  • I want to set a 24*24px PNG image for a QGraphicsRectItem on a QGraphicsScene/View
    I tried the following:

        scene = new QGraphicsScene(this);
        view= new QGraphicsView(this);
        view->setScene(scene);
        view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
        view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
      
        setCentralWidget(view);
        
        QBrush q;
        q.setTextureImage(QImage("resources/list.png"));
        
        QGraphicsRectItem* d  = new QGraphicsRectItem;
        d->setRect(30,30,24,24);
        d->setBrush(q);
        scene->addItem(d);
    

    But it doesn't look as expected: alt text
    The image is not centered in the RectItem and also appears 2x partially...
    Also I'm not sure if setTextureImage() is a good way to set an image



  • @westernCiv

    If QGraphicsRectItem is not matter,

    simply you can use this way.

    MainWindow::MainWindow(QWidget* parent) :
      QMainWindow(parent),
      ui(new Ui::MainWindow) {
      ui->setupUi(this);
    
      QGraphicsScene* scene = new QGraphicsScene(this);
      QPixmap pixmapItem("/your/image/path/imageNAme.png");
      QPixmap pixmapItems = pixmapItem.scaled(QSize(24,24),  Qt::KeepAspectRatio);
      QGraphicsView* view = new QGraphicsView(this);
    
      scene->addPixmap(pixmapItems);
      view->setScene(scene);
      setCentralWidget(view);
    }
    

    Edit:
    This is very simple and rough solution. there are many better ways also.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.