Design spørgsmål ang. billeder
Hey.Jeg har lavet en kort klasse i C++ med QT4. Et kort objekt kan indeholde værdien af kortet, altså om det er f.eks. en konge, og så self. hvilket slags kortet er ruder, hjerter osv. Men da jeg er igang med at lave en GUI app, så skal kortet jo også gerne kunne vises grafisk til brugeren. Dette kan laves meget nemt med, ved at bruge et jpg billede og putte det ind i en QLabel, og så vise det der, hvor det skal bruges. Den første måde jeg lavede det på, var ved at nedarve fra QLabel til kort klassen, så kunne kort klassen selv indeholde et billede, svarende til det kort den var blevet sat til. Dette virkede også perfekt. Noget ala dette her
Card *card = new Card(Card::SPADES,Card::KING);
mainLayout->addWidget (card);//Tilføjer kortet til layout
Inde i min kort klasse, har jeg så en funktion der loader billedet.
void Card::SetImage()
{
QImage *image = new QImage();
char *path = new char();
switch ( suit )
{
case HEARTS :
sprintf ( path, "../src/%dh.jpg", cardvalue +1 );
break;
case SPADES :
sprintf ( path, "../src/%ds.jpg", cardvalue +1 );
break;
case CLUBS :
sprintf ( path, "../src/%dc.jpg", cardvalue +1 );
break;
case DIAMONDS :
sprintf ( path, "../src/%dd.jpg", cardvalue +1 );
break;
};
image->load ( path );
this->setPixmap ( QPixmap::fromImage ( *image ) );
}
Men så mødte jeg en inde på irc, som sagde jeg skulle holde min game logik fra min GUI logik. Så at kort objektet ikke indeholder noget billede. Så kort klassen altså ikke nedarver fra QLabel, men så skal jeg til at have min switch statement inde i selve GUI logikken, og så skal der tilføjes et QLabel objekt til hvert kort objekt, hver gang jeg skal bruge et kort. Hvad er mest korrekt at gøre? Håber i forstår spørgsmålet