Какой класс Qt я должен использовать для представления изображения в прямоугольнике?

У меня есть самокодированный прямоугольник (не использую QRect в образовательных целях), который выглядит так:

class Block {

private: // also has getters and setters for this stuff
int m_x;
int m_y;
uint m_width;
uint m_height;
QColor m_color;

public:
Block(int x = 0, int y = 0, uint w = 64, uint h = 64);
Block(const QColor &color, int x = 0, int y = 0, uint w = 64, uint h = 64);

void paint(QPainter &painter) const
{
painter.fillRect(m_x, m_y, m_width, m_height, m_color);
}
};

Теперь я хотел бы добавить поддержку изображений, чтобы блок мог иметь цвет или изображение (если оба будут предоставлены, будет использоваться изображение).
Проблема в том, что существует слишком много классов для представления изображений (QPixmap, QImage, QIcon) и я понятия не имею, какой из них мне следует использовать.
Каковы различия, какой из них лучше всего подходит для простого рисования изображения ресурса в прямоугольник?

0

Решение

Если вы хотите отобразить изображение на экране, используйте QPixmap, Если вы хотите изменить изображение, загрузить или сохранить его в файл, используйте QImage,

QIcon основывается на QPixmap и предоставляет возможность выбора одного из множества растровых изображений на основе запрошенного размера и состояния. QIcon это, вероятно, не то, что вы хотите.

От документация:

Qt предоставляет четыре класса для обработки данных изображения: QImage, QPixmap, QBitmap и QPicture. QImage разработан и оптимизирован для ввода-вывода, а также для прямого доступа к пикселям и манипулирования ими, а QPixmap разработан и оптимизирован для отображения изображений на экране. QBitmap — это всего лишь вспомогательный класс, который наследует QPixmap, обеспечивая глубину 1. Наконец, класс QPicture — это устройство рисования, которое записывает и воспроизводит команды QPainter.

Класс QIcon предоставляет масштабируемые значки в разных режимах и состояниях. QIcon может генерировать меньшие, большие, активные и отключенные растровые изображения из набора заданных растровых изображений. Такие растровые изображения используются виджетами Qt, чтобы показать значок, представляющий конкретное действие.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]