QT中Qpixmap的清除和保存问题

moshangxinyu 2015-12-24 04:57:24


点击清除时,调用了clear()函数并未成功清除画板;
还有点击保存时,调用了save()函数,其中完成pix->save("a.png")后,a.png却仍未白板。
...全文
4098 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
伍心 2019-11-07
  • 打赏
  • 举报
回复 2
icPixmap.fill(Qt::black);
冷静忍耐 2015-12-27
  • 打赏
  • 举报
回复
引用 7 楼 moshangxinyu 的回复:
[quote=引用 4 楼 u013466477 的回复:] [quote=引用 3 楼 moshangxinyu 的回复:] 把this改成pix就画不起来了这是为什么
如果你要用QPixmap,就不用换成this 你只是要画图的话,QWidget可以了,那就只要传this,在QWidget上画,QPixmap变量就不要了。 [/quote] 请问画在了pixmap上,但是如何同时显示出来[/quote] 同时是什么意思不懂额,看下面吧,都写出来了 画在pixmap上 QPainter p; QPixmap pixmap(80, 80); pixmap.fill(QColor(255, 255, 255)); p.begin(&pixmap); p.drawLine(); p.end(); 画在this即widget上 QPainter p2(this); p2.drawLine(); 把pixmap画在this上面 p2.drawPixmap(pixmap, x, y); 清空pixmap QPixmap pix = QPixmap(); p2.drawPixmap(pix, x, y);
moshangxinyu 2015-12-25
  • 打赏
  • 举报
回复
把this改成pix就画不起来了这是为什么
冷静忍耐 2015-12-25
  • 打赏
  • 举报
回复
QPixmap最好不要是指针 清空这么写就好了,默认构造就是空的 QPixmap clearPix = QPixmap(); pix = clearPix; update();
moshangxinyu 2015-12-25
  • 打赏
  • 举报
回复
还有用我的方法,pixmap出来为什么是无数条线
moshangxinyu 2015-12-25
  • 打赏
  • 举报
回复
引用 4 楼 u013466477 的回复:
[quote=引用 3 楼 moshangxinyu 的回复:] 把this改成pix就画不起来了这是为什么
如果你要用QPixmap,就不用换成this 你只是要画图的话,QWidget可以了,那就只要传this,在QWidget上画,QPixmap变量就不要了。 [/quote] 请问画在了pixmap上,但是如何同时显示出来
moshangxinyu 2015-12-25
  • 打赏
  • 举报
回复
同时构造了两个Qpainter
引用 5 楼 shihoongbo 的回复:
[quote=引用 3 楼 moshangxinyu 的回复:] 把this改成pix就画不起来了这是为什么
QPainter painter(this/pix) this,就是往Widget上画 pix,就是往pix上画 你改成pix,但是仍然是在Widget上操作,当然画不出来 你可以同时构建两个QPainter,一个操作this,一个操作pix,这样才能画上去,保存的时候也能保存下来 [/quote]
引用 5 楼 shihoongbo 的回复:
[quote=引用 3 楼 moshangxinyu 的回复:] 把this改成pix就画不起来了这是为什么
QPainter painter(this/pix) this,就是往Widget上画 pix,就是往pix上画 你改成pix,但是仍然是在Widget上操作,当然画不出来 你可以同时构建两个QPainter,一个操作this,一个操作pix,这样才能画上去,保存的时候也能保存下来 [/quote] 请问同时建造了两个 是这样么 void Widget::paintEvent(QPaintEvent*p){ QPainter painter(this); QPainter painter1(pix); painter.drawPixmap(QPoint(0,0),*pix); QPen pen; pen.setColor(Qt::black); pen.setWidth(1); painter.setPen(pen); painter1.setPen(pen); painter.drawLine(m_startPoint,m_endPoint); painter1.drawLine(m_startPoint,m_endPoint); for(int i = 0;i<m_lines.size();i++){ myLine* pLine = m_lines[i]; painter.drawLine(pLine->m_startPoint,pLine->m_endPoint); painter1.drawLine(pLine->m_startPoint,pLine->m_endPoint); } } 可是画一条线就是无数条线
Creator_莫言 2015-12-25
  • 打赏
  • 举报
回复
QPainter painter(this); 应该改成QPainter painter(pix); 你的画板是widget,并不是pix
未狂 2015-12-25
  • 打赏
  • 举报
回复
引用 3 楼 moshangxinyu 的回复:
把this改成pix就画不起来了这是为什么
QPainter painter(this/pix) this,就是往Widget上画 pix,就是往pix上画 你改成pix,但是仍然是在Widget上操作,当然画不出来 你可以同时构建两个QPainter,一个操作this,一个操作pix,这样才能画上去,保存的时候也能保存下来
冷静忍耐 2015-12-25
  • 打赏
  • 举报
回复
引用 3 楼 moshangxinyu 的回复:
把this改成pix就画不起来了这是为什么
如果你要用QPixmap,就不用换成this 你只是要画图的话,QWidget可以了,那就只要传this,在QWidget上画,QPixmap变量就不要了。

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧