Qt 将数据转换为 QPixmap

Posted

技术标签:

【中文标题】Qt 将数据转换为 QPixmap【英文标题】:Qt convert data to QPixmap 【发布时间】:2014-11-26 16:44:44 【问题描述】:

我正在尝试将一些数据从 QVector 转换为 QBitmap。我怎样才能做到这一点? 我有一个 QPointF 的 QVector,我正在尝试将该数据转换为在 QPixmap 上重绘。

QVector<QPointF> data;
QPixmap pixMap;

编辑

我做了这样的东西。为什么它不起作用?

QPainter *painter = new QPainter(&pixMap);
for(int i = 1; i < data.last().x(); i++)
  painter->setPen(QPen(Qt::black, 2));
  painter->drawPolyline(this->data.data(), this->data.size());

  delete painter;
  setPixmap(pixMap);

【问题讨论】:

你需要在像素图上画点吗? 是的 :) 抱歉解释不准确 @Shepherd 你看过QPainter吗? 什么是“this-&gt;data.data()”和“this-&gt;data.size()”。什么是“data.last.x()”? 你已经知道什么是数据了。通常 data() 函数从 Vector 中获取所有 QPOINTF,这样我就可以在 WIDGET 上重新绘制。但是当我在 QPixMap 上做的时候,什么都没有。 【参考方案1】:

您可以使用QPainter 绘制像素图:

QPixmap pixmap(100,100);   // a pixmap of size 100x100 pixels
QPainter painter(&pixmap);

// iterate over your points and draw them using the painter

QPainter 文档有大量关于如何使用 QPainter、画笔、钢笔绘制东西的示例...

【讨论】:

对不起,这不是一个好问题 - 什么不起作用?怎么没用?编译器说了什么? 请注意,在 QPainter 对象被销毁之前,不能保证 QPixmap 状态会完全更新。保证这一点的最简单方法是将 QPainter(以及调用它的绘图命令)放在一组花括号内,并在该范围之外声明 QPixmap,并且在结束之前不要尝试将 QPixmap 用于任何事情范围(即在大括号之后)

以上是关于Qt 将数据转换为 QPixmap的主要内容,如果未能解决你的问题,请参考以下文章

Qt 编程指南10 QImage Mat QPixmap转换

Qt QPixmap和QImage的相互转换

Qt:在另一个线程中预加载 qpixmap?

如何在Python 3中将QImage(QPixmap)转换为PIL图像?

从 Macbook pro 上的 IplImage* 转换后,我的 QPixmap 分为 3 个部分

如何在 Python 3 中将 QImage(QPixmap) 转换为 PIL Image?