找回密码
 立即注册
收起左侧

Qt在QLabel图片上画图

3
回复
9406
查看
[复制链接]
累计签到:22 天
连续签到:1 天
来源: 2015-5-13 17:32:51 显示全部楼层 |阅读模式
实现要求如下: 通过相机采集的图像在QLabel上实时显示,100ms刷新一次,呈视频显示出来。在MainWindow或者widget的窗口中心画一个十字线(目的是定位图像的中心点)。问这个十字线怎么画?

个人想法尝试:
1.单纯在Mainwindow重写paintEvent应该不行,画出来的线在QLabel的下面
2.子类化QLabel
  1. class MyLabel : public QLabel
  2. {
  3.     Q_OBJECT
  4. public:
  5.     explicit MyLabel(QWidget *parent = 0);
  6.     void paintEvent(QPaintEvent *event);

  7. signals:

  8. public slots:

  9. };

  10. #endif // MYLABEL_H
复制代码
然后在MainWindow里:
  1. //显示采集的图像
  2. void MainWindow::ShowCamera()
  3. {
  4.     QImage image(aa->m_pRawBuffer,1000,700,QImage::Format_Indexed8);
  5.     pixmap = QPixmap::fromImage(image);

  6.     MyLabel label;
  7.     label.move(0,0);
  8.     label.setPixmap(pixmap);

  9. }
复制代码
但是运行错误,错误提示如图
3.在mainwindow里paintevent() 里将pixmap画出来。但是这样也不行,变成了一张图片,不是视频了。
求解决。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:22 天
连续签到:1 天
2015-5-14 15:04:39 显示全部楼层
问题解决了,第二种方法子类化QLabel就可以了。
但是我在mainwindow里面的那段代码后面少了一个label.show();  出现错误的原因是Debug文件里有中间文件的错误生成,把Debug文件删除掉重新生成就好了。
回复 支持 反对

使用道具 举报

累计签到:344 天
连续签到:1 天
2015-5-14 11:30:55 显示全部楼层
我觉得可以用QPainter这个方法来做,先用QPixmap或者QImage画出一张图,然后label显示pixmap。建议用QImage来画,这个方便些,然后用它的函数fromImage转成QPixmap。
回复 支持 反对

使用道具 举报

累计签到:344 天
连续签到:1 天
2015-5-14 11:32:28 显示全部楼层
不好意思,我看错了,请忽略我的回答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了