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

QT如何实现在Label控件上显示图片后画线?

6
回复
7425
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2015-10-18 10:28:09 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

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

x
RT 已经实现了在Label控件上显示图片 如何实现在图片上画线?例如用鼠标画框等
显示图片的代码如下
  1. void Widget::openPictureSlot()
  2. {
  3.    qDebug()<<"openpicture";
  4.    QImage *image=new QImage("E:/code/picture_test/images/imgMB.bmp");
  5.    QImage* imgScaled = new QImage;

  6.    *imgScaled=image->scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatio);
  7.    ui->label->setPixmap(QPixmap::fromImage(*imgScaled));
  8. }
复制代码
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-10-19 08:59:30 显示全部楼层
重载paitEvent函数在里面划线
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-10-20 22:09:01 显示全部楼层
sywh 发表于 2015-10-19 08:59
重载paitEvent函数在里面划线

能详细说下吗?刚刚开始学习 不太会 好多人都这么说 但是具体不会写

点评

继承QLabel,然后写一个paintEvent函数,这样你就可以在paintEvent里实现划线的代码了。 void QLabel::paintEvent ( QPaintEvent * ) [virtual protected] Reimplemented from QWidget::paintEvent(). void QWidget  详情 回复 发表于 2015-10-21 08:54
回复 支持 反对

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-10-21 08:54:41 显示全部楼层
看艾薇的熊猫 发表于 2015-10-20 22:09
能详细说下吗?刚刚开始学习 不太会 好多人都这么说 但是具体不会写

继承QLabel,然后写一个paintEvent函数,这样你就可以在paintEvent里实现划线的代码了。
void QLabel::paintEvent ( QPaintEvent * ) [virtual protected]
Reimplemented from QWidget::paintEvent().

void QWidget::paintEvent ( QPaintEvent * event ) [virtual protected]
This event handler can be reimplemented in a subclass to receive paint events passed in event.

A paint event is a request to repaint all or part of a widget. It can happen for one of the following reasons:

repaint() or update() was invoked,
the widget was obscured and has now been uncovered, or
many other reasons.

回复 支持 反对

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-10-21 08:59:32 显示全部楼层
突然想起来亚飞老师的说法才是正确的@yafeilinux,我的说法是错误的,这里不能叫重载,亚飞老师称之为重定义才是正确的。  
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-10-21 20:19:14 显示全部楼层
sywh 发表于 2015-10-21 08:54
继承QLabel,然后写一个paintEvent函数,这样你就可以在paintEvent里实现划线的代码了。
void QLabel::pa ...

我每次提升就出错了 错误出在label = new MyLabel(Widget);这句话
错误提示是:no matching function for call to 'MyLabel::MyLabel(QWidget*&)'
         label = new MyLabel(Widget);
                                   ^
回复 支持 反对

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-10-22 08:47:48 显示全部楼层
你构造函数写错了吧。
回复 支持 反对

使用道具 举报

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

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