2016-05-30 12 views
0

Hallo, ich habe immer noch ein Problem mit QGraphicsSceneFehler bei QGraphicsScene * Szene in Konstruktor

Ich habe ein Widget namens Gioco erstellt, und ich habe die * Szene im Konstruktor erklärt

Gioco::Gioco() 
{ 
    QGraphicsScene *scene = new QGraphicsScene(); 
    scene -> setSceneRect(0,0,1980,1200); 
    setScene(scene); 
} 

jetzt möchte ich die gleiche * Szene im luftleeren Raum verwenden, aber ich habe den Fehler undefinied Bezug auf * Szene

void Gioco::partita() 
{extern QGraphicsScene *scene; 

    //create a new Pixmap Item 
    QGraphicsPixmapItem *img_mazzo = new QGraphicsPixmapItem(); 
    img_mazzo -> setPixmap(QPixmap(":/Media/Immagini/dorso.jpg")); 

    //add to scene 
    scene -> addItem(img_mazzo); 
} 

wie kann ich diesen Fehler beheben? danke

Antwort

2

Sie erhalten den Fehler, weil die extern QGraphicsScene * scene eine globale Variable deklariert, die nirgendwo definiert ist.

Sie wollen wahrscheinlich die Szene eine Membervariable zu sein, und es gibt keine Notwendigkeit explizite dynamische Zuordnung zu verwenden:

class Gioco { 
    QGraphicsScene m_scene; 
public: 
    Gioco(); 
    void partita(); 
}; 

auto const kImmaginiDorso = QStringLiteral(":/Media/Immagini/dorso.jpg"); 

Gioco::Gioco() { 
    m_scene.setSceneRect(0,0,1980,1200); 
    setScene(&m_scene); 
} 

void Gioco::partita() { 
    auto mazzo = new QGraphicsPixmapItem; 
    mazzo->setPixmap(QPixmap(kImmaginiDorso)); 
    m_scene.addItem(mazzo); 
} 
+0

Dank !! Welche Funktion hat der Begriff auto? –

+0

@DavideFerrari Es steht für einen [abgeleiteten Compiler-Typ] (http://stackoverflow.com/q/8935590/1329652). Wenn es sinnvoll verwendet wird (http://stackoverflow.com/q/6434971/1329652), wird die Lesbarkeit des Codes verbessert und Sie können weniger eingeben. Moderne IDEs werden den Typ genau so ableiten, wie es ein Compiler tun würde, also wird 'mazzo' vervollständigt usw. –

Verwandte Themen