2010-10-02 24 views
7

quiero mostrar una foto del automóvil.
después de la carga, el usuario puede mover el automóvil presionando las teclas del teclado.
cuando presiona "flecha arriba", el automóvil se moverá hacia arriba.
qué methos debo usar para mostrar la foto. Qlabel.setpixmap ??
El siguiente código muestra la imagen en un nuevo widget, pero quiero mostrarlo en la página de mi ventana principal.
¿Qué debo hacer?
GraciasQt: mostrar la imagen en el 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(); 
} 

Respuesta

10

Está sonando un poco como usted está tratando de escribir el código de juego con el sistema de diseño Qt. Esto no es particularmente recomendado.

En el código anterior, ha colocado la imagen en la QLabel image, pero no ha colocado esa QLabel en la ventana principal. La forma más sencilla de hacerlo es simplemente pasar this como primer argumento para el constructor QLabel.

Si este tipo de animación es el punto central de la aplicación, recomiendo usar OpenGL y el corresponding class, o el sistema graphics view.

+0

Sí, jkerian gracias, cambié a "esto". – trante

+0

Estoy planeando hacer un juego simple usando Qt. Pero debido a su recomendación, ahora estoy leyendo sobre QGraphicsView y OpenGL. ¿Puedes comparar estos dos (QGraphicsView y OpenGL)? ¿Cuáles son las ventajas, desacuerdo? Muchas gracias. – trante

+1

OpenGL es significativamente más complicado, y realmente está diseñado para hacer una visualización en 3D completa. El problema con el uso de OpenGL en este entorno es que es un poco engorroso de usar, y tiene un poco de una curva de aprendizaje. GraphicsView se describe en gran medida en el enlace anterior, pero es más útil en este contexto porque le permite alejarse de los motores de diseño habituales. – jkerian

1

Si desea escribir un juego en 2D, utilizando Qt, eche un vistazo a la clase QPainter. Por ejemplo, si desea tener un widget que represente su ventana de juego, debe heredarlo de un QWidget o de su subclase y volver a implementar la función paintEvent (evento QPaintEvent *) para realizar su dibujo. Puede encontrar muchos códigos útiles para dibujar usando QPainter en ejemplos de Qt.