0

我有一个自编码矩形(不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),我不知道应该使用哪一个。有什么区别,哪一个最适合简单地将资源图像绘制成矩形?

4

1 回答 1

3

如果要在屏幕上显示图像,请使用QPixmap. 如果要修改图像、加载或保存到文件,请使用QImage.

QIcon基于QPixmap并提供了根据请求的大小和状态选择许多像素图之一的能力。QIcon可能不是你想要的。

文档中:

Qt 提供了四个类来处理图像数据:QImage、QPixmap、QBitmap 和 QPicture。QImage 是为 I/O 和直接像素访问和操作而设计和优化的,而 QPixmap 是为在屏幕上显示图像而设计和优化的。QBitmap只是一个继承QPixmap的便利类,保证深度为1。最后,QPicture类是一个绘制设备,记录和回放QPainter命令。

QIcon 类提供了不同模式和状态的可伸缩图标。QIcon 可以从给定的像素图集中生成更小、更大、活动和禁用的像素图。Qt 小部件使用此类像素图来显示代表特定操作的图标。

于 2013-07-12T10:39:41.103 回答