2010-10-02 43 views
7

tôi muốn hiển thị ảnh ô tô.
sau khi tải, người dùng có thể di chuyển xe bằng cách nhấn phím trên bàn phím.
khi nhấn "mũi tên lên", xe sẽ di chuyển lên trên.
tôi nên sử dụng methos nào để hiển thị ảnh. Qlabel.setpixmap ??
Mã bên dưới hiển thị hình ảnh trên tiện ích con mới, nhưng tôi muốn hiển thị nó trên trang mainwindow của tôi.
Tôi nên làm gì?
Cảm ơn bạnQt: hiển thị hình ảnh trên tiện ích

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

Trả lời

10

Nó nghe có vẻ một chút như bạn đang cố gắng để viết mã trò chơi với hệ thống bố trí Qt. Điều này không được khuyến khích đặc biệt.

Trong mã của bạn ở trên, bạn đã đặt hình ảnh trên QLabel image, nhưng bạn chưa đặt QLabel trên mainwindow của mình. Cách dễ nhất để làm điều đó chỉ là để vượt qua this làm đối số đầu tiên cho hàm tạo QLabel.

Nếu loại hoạt ảnh này là toàn bộ điểm của ứng dụng, tôi khuyên bạn nên sử dụng OpenGL và corresponding class hoặc hệ thống graphics view.

+0

Có jkerian cảm ơn bạn, tôi đã thay đổi thành "this". – trante

+0

Tôi đang lên kế hoạch tạo một trò chơi đơn giản bằng cách sử dụng Qt. Nhưng do sự giới thiệu của bạn, bây giờ tôi đang đọc về QGraphicsView và OpenGL. Bạn có thể so sánh hai điều này (QGraphicsView và OpenGL). Những lợi thế, disadv là gì? Cảm ơn nhiều. – trante

+1

OpenGL phức tạp hơn nhiều và thực sự được thiết kế để hiển thị 3D toàn diện. Vấn đề với việc sử dụng OpenGL trong môi trường này là nó là một chút cồng kềnh để sử dụng, và có một chút của một đường cong học tập. GraphicsView được mô tả khá nhiều trong liên kết ở trên, nhưng chủ yếu là hữu ích trong bối cảnh này bởi vì nó cho phép bạn thoát khỏi các công cụ bố cục thông thường. – jkerian

1

Nếu bạn muốn viết một trò chơi 2D, sử dụng Qt - hãy xem lớp QPainter. Ví dụ, nếu bạn muốn có một widget đại diện cho cửa sổ trò chơi của bạn, bạn nên kế thừa nó từ một QWidget hoặc nó là lớp con và thực hiện lại chức năng paintEvent (QPaintEvent * event) để thực hiện bản vẽ của bạn. Bạn có thể tìm thấy rất nhiều mã hữu ích để vẽ bằng cách sử dụng QPainter trong các ví dụ Qt.

Các vấn đề liên quan