【发布时间】:2014-11-27 15:05:19
【问题描述】:
我想知道如何从我的数据创建位图并将其显示在我的小部件上。
我有 QVector 向量,它是一些点的向量来绘制图表。如何在我的小部件上重新绘制它但使用 QBitmap?我不想简单地在小部件上绘制,我更喜欢将像素图传递给小部件,只是为了显示它。
我该怎么做?
我的代码:
QPainter painter(pixMap);
painter.setPen(QPen(Qt::black, 2));
painter.drawPolyline(this->data.data(), this->data.size());
painter.drawLine(QPointF(5,5),QPointF(50,50));
setPixmap(*pixMap);
这是我的示例代码。为什么它不起作用?我在小部件上看不到任何内容。
我有小部件类
class Widget : public QLabel
{
public:
Widget(QVector<QPointF> * data);
~Widget();
protected:
void paintEvent(QPaintEvent * event);
private:
QVector<QPointF> data;
QPixmap *pixMap;
};
在构造函数中我有
Widget::Widget(QVector<QPointF> * data){
pixMap = new QPixmap(300,300);
pixMap->fill(Qt::red);
}
在paintEvent中
void Waveform::paintEvent(QPaintEvent *event)
{
QPainter painter(pixMap);
painter.setPen(QPen(Qt::white, 2));
painter.drawPolyline(this->data.data(), this->data.size());
painter.drawLine(QPointF(5,5),QPointF(50,50));
setPixmap(*pixMap);
}
如果我用QPainter painter(this) 替换QPainter painter(pixMap),我可以看到我的图表。但我想使用像素图。
【问题讨论】:
-
QBitmap 用于遮罩等,它有 color0 和 color1,你到底想要什么,为 pixmap 创建遮罩还是只画一个图或其他什么?
-
我想画一个图,但不想直接在小部件上。我想以某种方式从我的数据中绘制位图,然后在 QLABEL 上显示位图。
-
为什么是位图?位图是2种颜色的蒙版,像素图更好,可以用不同的颜色画线和点。 QPixmap。
-
请看下面的代码
-
您的代码看起来不错,如果 data() 返回真正正确的数据,那么我的答案应该是一个解决方案,如果不是,请指出我。另外,不要添加您的代码作为答案,只需编辑您的问题(点击编辑)