Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Qt] Zamiana obrazków przy kliknięciu guzika

Ostatnio zmodyfikowano 2015-04-03 10:29
Autor Wiadomość
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
C/C++
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsPixmapItem>
#include "karta.h"

class MojObrazek {
    QGraphicsScene * scene;
    QGraphicsView * view;
    QGraphicsPixmapItem * item;
   
public:
    MojObrazek( Karta * );
    QGraphicsView * getView();
};


MojObrazek.cpp
C/C++
#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
C/C++
#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
C/C++
#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() {
    // JAK ??????
}

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
P-129959
« 1 »
  Strona 1 z 1