2010-10-02 7 views
7

Je veux afficher une photo de voiture.
après le chargement, l'utilisateur peut déplacer la voiture en appuyant sur les touches du clavier.
lorsqu'il appuie sur «flèche vers le haut», la voiture se déplace vers le haut.
quel methos dois-je utiliser pour montrer la photo. Qlabel.setpixmap ??
Le code ci-dessous montre l'image sur un nouveau widget, mais je veux l'afficher sur ma page mainwindow.
Que dois-je faire?
MerciQt: Afficher l'image sur le widget

void MainWindow::showIt() 
{ 
    QLabel *image = new QLabel(); 
    image->setPixmap(QPixmap("car.jpg")); 
    image->show(); 
    update(); 
} 

MainWindow::MainWindow(QWidget *parent) : 
     QMainWindow(parent), 
     ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    showIt(); 
} 

Répondre

10

Il est sonnant un peu comme vous essayez d'écrire du code de jeu avec le système de mise en page Qt. Ce n'est pas particulièrement recommandé.

Dans votre code ci-dessus, vous avez placé l'image sur le QLabel image, mais vous n'avez pas placé cette étiquette QLabel sur votre fenêtre principale. Le moyen le plus simple de le faire est simplement de passer this comme premier argument au constructeur QLabel.

Si ce type d'animation est le point entier de l'application, je vous recommande d'utiliser OpenGL et le corresponding class ou le système graphics view.

+0

Oui merci jkerian, j'ai changé pour "ceci". – trante

+0

Je prévois de faire un jeu simple en utilisant Qt. Mais en raison de votre recommandation, je suis en train de lire sur QGraphicsView et OpenGL. Pouvez-vous comparer ces deux (QGraphicsView et OpenGL). Quels sont les avantages, inconvénient? Merci beaucoup. – trante

+1

OpenGL est nettement plus compliqué, et est vraiment conçu pour faire un affichage 3D complet. Le problème avec l'utilisation d'OpenGL dans cet environnement est qu'il est un peu lourd à utiliser et qu'il a une certaine courbe d'apprentissage. GraphicsView est assez bien décrit dans le lien ci-dessus, mais il est surtout utile dans ce contexte car il vous permet de vous démarquer des moteurs de présentation habituels. – jkerian

1

Si vous voulez écrire un jeu en 2D, utilisez Qt - jetez un oeil à la classe QPainter. Par exemple, si vous voulez qu'un widget représente votre fenêtre de jeu, vous devez l'hériter d'une fonction QWidget ou sa sous-classe et réimplémenter paintEvent (QPaintEvent * event) pour effectuer votre dessin. Vous pouvez trouver beaucoup de code utile pour dessiner en utilisant QPainter dans les exemples Qt.