2010-10-02 15 views
7

Chcę wyświetlić zdjęcie samochodu.
po załadowaniu, użytkownik może przenieść samochód, naciskając klawisze na klawiaturze.
po naciśnięciu "strzałki w górę" samochód przesunie się w górę.
które powinny być użyte w metosach do pokazania zdjęcia. Qlabel.setpixmap ??
Poniższy kod przedstawia obraz w nowym widżecie, ale chcę go wyświetlić na stronie głównej programu mainwindow.
Co powinienem zrobić?
DziękujęQt: pokaż obraz na widgecie

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(); 
} 

Odpowiedz

10

To brzmiące trochę jak próbujesz napisać kod gry z systemem układu Qt. Nie jest to szczególnie zalecane.

W powyższym kodzie umieściłeś obrazek na QLabel image, ale nie umieściłeś tego QLabel na twoim głównym oknie. Najprostszym sposobem jest podanie this jako pierwszego argumentu konstruktora QLabel.

Jeśli ten rodzaj animacji jest najważniejszym punktem aplikacji, zalecam użycie systemu OpenGL i corresponding class lub graphics view.

+0

Tak jkerian dziękuję, zmieniłem na "ten". – trante

+0

Mam zamiar zrobić prostą grę za pomocą Qt. Ale z powodu twojej rekomendacji czytam teraz o QGraphicsView i OpenGL. Czy możesz porównać to dwa (QGraphicsView i OpenGL). Jakie są zalety, disadv? Dziękuję Ci bardzo. – trante

+1

OpenGL jest znacznie bardziej skomplikowany i naprawdę jest przeznaczony do pełnowymiarowego wyświetlania 3D. Problem z używaniem OpenGL w tym środowisku polega na tym, że jest on nieco kłopotliwy w użyciu i ma trochę krzywej uczenia się. GraphicsView jest prawie opisany w powyższym linku, ale jest bardzo przydatny w tym kontekście, ponieważ pozwala oderwać się od zwykłych mechanizmów układu. – jkerian

1

Jeśli chcesz napisać grę 2D, używając Qt - spójrz na klasę QPainter. Na przykład, jeśli chcesz mieć jeden widżet reprezentujący twoje okno gry, powinieneś dziedziczyć je z QWidget lub jego podklasy i ponownie zaimplementować funkcję paintEvent (QPaintEvent * event), aby wykonać rysunek. Możesz znaleźć wiele przydatnych kodów do rysowania za pomocą QPaintera w przykładach Qt.

Powiązane problemy