2017-08-08 7 views
0

À quoi ressemblerait la syntaxe si je voulais utiliser QGraphicsView::scene()? Mon but est de changer l'échelle d'un pixmap dans mon objet de vue graphique avec des curseurs. Je veux utiliser QgraphicsView::scene() et QScene::itemsAt() etc pour trouver l'original pixmap, puis utiliser QPixmap::scaled() (ce que je trouve serait le seul moyen de s'assurer que mon ensemble de propriétés cosmétiques pour le pixmap est vrai). Cependant, j'ai des problèmes avec la syntaxe de QGraphicsView::scene(). Ma tentative est ci-dessous. Je crée également une application de widget Qt pour le contexte.Utilisation de la méthode QGraphicsView Scene() pour affecter une variable QGraphicsScene

QGraphicsViewScene graphicsScene = ui->PixmapView->scene(); 
QGraphicsPixmapItem graphicsPixmapItem = graphicsScene.itemAt(0, 0); 

modifier Si je devais conserver ma QPixmap pixmap * comme variable membre, je ne suis pas tout à fait sûr de savoir comment mettre en œuvre que lorsque cela reste dans la portée de mes machines à sous.

modifier static membres variables?

+0

Cela devrait être QGraphicsScene * graphicsScene, pas QGraphicsView –

+0

Pourquoi ne pas stocker seulement votre '' QGraphicsPixmapItem * en tant que variable membre? – thuga

+0

@thuga comment pourrais-je faire cela désolé – CrippledTable

Répondre

1

Vous pouvez transformer votre objet QGraphicsPixmapItem en variable membre de votre classe. Vous pourrez alors y accéder à partir de n'importe laquelle de vos fonctions membres.

Voici un exemple rapide:

class MyClass : public QWidget 
{ 
    Q_OBJECT 
public: 
    MyClass(QWidget *parent = nullptr) : QWidget(parent) 
    { 
     // create graphics view, scene, etc.. 
    } 

public slots: 
    void openActionTriggered() 
    { 
     ... 
     myItem = scene->addPixmap(myPixmap); // you can create your item however you want.. this is just an example 
    } 
    void mySlot() 
    { 
     if(myItem) 
     { 
      // do something with myItem 
     } 
    } 

private: 
    QGraphicsPixmapItem *myItem = nullptr; // myItem is a member variable of 
    QGraphicsScene *scene = nullptr; // I made scene a member variable so it can be accessed from any member functions 
} 
+0

C'est un bon point, j'espérais pouvoir utiliser ma mise en œuvre. Mais j'apprécie le travail. Je vais le tester et j'espère ne pas avoir le même problème. – CrippledTable