[Qt] Zamiana obrazków przy kliknięciu guzika
Ostatnio zmodyfikowano 2015-04-03 10:29
killermannnnn Temat założony przez niniejszego użytkownika |
[Qt] Zamiana obrazków przy kliknięciu guzika » 2015-04-03 10:29:27 Cześć. Mam program który w layoucie wyświetla losowo cztery obrazki i chciałbym aby po kliknięciu guzika zamieniły się na inne, również losowo wybrane. Zrobiłem klasę MojObrazek, która ma funkcję zwracająca wskaźnik na QGraphicsView MojObrazek.h #include <QGraphicsScene> #include <QGraphicsView> #include <QGraphicsPixmapItem> #include "karta.h"
class MojObrazek { QGraphicsScene * scene; QGraphicsView * view; QGraphicsPixmapItem * item; public: MojObrazek( Karta * ); QGraphicsView * getView(); };
MojObrazek.cpp #include "mojobrazek.h" #include <QPixmap>
MojObrazek::MojObrazek( Karta * temp ) { scene = new QGraphicsScene; view = new QGraphicsView( scene ); item = new QGraphicsPixmapItem( QPixmap( temp->getName() ) ); scene->addItem( item ); }
QGraphicsView * MojObrazek::getView() { return view; } I Widok główny programu: Widok.h #include <QWidget> #include <QPushButton> #include <QVBoxLayout> #include <QHBoxLayout> #include <QVector> #include "karta.h" #include "mojobrazek.h"
class Widok : public QWidget { QHBoxLayout * h1; QVBoxLayout * v1; QVBoxLayout * v2; QVBoxLayout * v3; QPushButton * p1; QPushButton * p2; MojObrazek * kd1; MojObrazek * kd2; MojObrazek * kg1; MojObrazek * kg2; QVector < Karta *> talia; public: Widok(); private slots: void newGame(); void exit(); }; Widok.cpp #include "widok.h" #include <QObject> #include <QLabel> #include <QTime>
Widok::Widok() { h1 = new QHBoxLayout( this ); v1 = new QVBoxLayout; v2 = new QVBoxLayout; v3 = new QVBoxLayout; p1 = new QPushButton( "Nowa GRA" ); p2 = new QPushButton( "Wyjdz" ); QObject::connect( p1, SIGNAL( click() ), this, SLOT( newGame() ) ); for( int i = 0; i < 5; i++ ) { QString path = QString( "%1.jpg" ).arg( i ); talia.append( new Karta( path, i ) ); } QTime now = QTime::currentTime(); qsrand( now.msec() ); kd1 = new MojObrazek( talia[ qrand() % 5 ] ); kd2 = new MojObrazek( talia[ qrand() % 5 ] ); kg1 = new MojObrazek( talia[ qrand() % 5 ] ); kg2 = new MojObrazek( talia[ qrand() % 5 ] ); h1->addLayout( v1 ); h1->addLayout( v2 ); h1->addLayout( v3 ); v1->addWidget( new QLabel( QObject::tr( "DILER" ) ) ); v1->addWidget( kd1->getView() ); v1->addWidget( kd2->getView() ); v2->addWidget( new QLabel( QObject::tr( "GRACZ" ) ) ); v2->addWidget( kg1->getView() ); v2->addWidget( kg2->getView() ); v3->addWidget( p1 ); v3->addWidget( p2 ); }
void Widok::newGame() { }
void Widok::exit() { ; } Klasa Karta przechowuje Qstring i int gdzie QString odpowiada za ścieżkę do pliku. I teraz pytanie, co zrobić w funkcji newGame() , żeby obrazki się podmieniły? ew. Jak je usunąć z layouta i wstawić nowe ? Link do całego projektu: https://www.dropbox.com/sh/eqxsq9li3upjf9t/AACZrcXKjK8Uvv1wM5jGWqfqa?dl=0 |
|
« 1 » |