我应该使用哪个Qt类来表示矩形图像?

时间:2013-07-12 10:13:33

标签: c++ image qt paint qt5

我有一个自编码矩形(出于教育目的不使用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);
    }
};

现在我想添加对图像的支持,因此块可以有颜色或图像(如果两者都提供,将使用图像)。 问题是,有太多的类来表示图像(QPixmapQImageQIcon),我不知道应该使用哪一个。 有什么区别,哪一个最适合简单地将资源图像绘制成矩形?

1 个答案:

答案 0 :(得分:3)

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

QIcon基于QPixmap,可根据请求的大小和状态选择众多像素图中的一种。 QIcon可能不是你想要的。

来自documentation

  

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

     

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