Показать изображение с QImage и QRect - PullRequest
3 голосов
/ 21 января 2012

Я пытаюсь создать игру с Qt, но не могу загрузить изображение.

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
image.load("F:/My Workspace/sprite.png");
rect = image.rect();
rect.moveTo(5,5);
}

Это конструктор окна.Изображение не отображается.Я знаю, как отображать изображение с помощью QLabel, но я хочу использовать функции QRect, чтобы я мог перемещать изображение.

1 Ответ

4 голосов
/ 21 января 2012

Это не так, как все работает. Изображение не отображается, потому что вы ничего не делаете для его отображения. И rect, который вы получаете от image.rect() - это просто набор чисел. Он никак не связан с изображением, поэтому его изменение не изменит изображение независимо от того, отображается оно или нет.

Вот четыре способа сделать то, что вы хотите:

  1. Переопределите paintEvent(QPaintEvent*) и нарисуйте изображение там, где вы хотите, используя одну из QPainter drawImage подпрограмм.
  2. Используйте QLabel, установите его значок и используйте макеты, чтобы разместить его там, где вы хотите.
  3. Используйте любой тип QWidget и установите таблицу стилей с фоновым изображением. Опять же, используйте макеты (или абсолютное позиционирование), чтобы получить его там, где вы хотите.
  4. Используйте Graphics View framework, если вам нужно много таких элементов.

Есть несколько других вариантов, в зависимости от ваших конкретных требований. Посмотрите примеры рисования и QPainter документы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...