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

在画布上绘制图形

5
回复
8024
查看
[复制链接]
累计签到:30 天
连续签到:1 天
来源: 2017-11-6 10:25:40 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 yiqinnerry 于 2017-11-6 10:30 编辑

我在一个Qlabel里面放置画布Qpixmap,然后通过upadate()函数调用paintevent()来在画布上绘制一个图形,但是绘制的图形显示不到画布上:
//下面三行是在一个函数中使用的
QPixmap pixmap(file_name);
imageLabel->setPixmap(pixmap);
update();

//重绘事件
void PlotTool::paintEvent(QPaintEvent *event)
{
    QPainter paint(this);
    paint.drawPixmap(QPoint(0,0),pixmap);
    paint.setPen(QPen(Qt::gray,5));
    for(int i=0;i<4;i++)
    {
       paint.drawPoint(X,Y); paint.drawPoint(A,B);   
    }
    paint.setPen(QPen(Qt::green,0,Qt:: DashLine));
    QPolygon pts;
    pts.setPoints(4,X[0],Y[0],X[1],Y[1],X[2],Y[2],X[3],Y[3]);
    paint.drawConvexPolygon(pts);
}

请问各位大神我的问题出在哪呢?刚接触qt,知识很杂乱,我的程序是基于QMainWindow的,可以直接这样在其他函数中通过调用update()函数来调用paintevent()进行重绘吗?

最佳答案

查看完整内容

听得也不是很明白,实在不会可以把程序发到 ,我试试帮你看看!
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2017-11-6 10:25:41 显示全部楼层
yiqinnerry 发表于 2017-11-7 10:37
图片位置是正确的。我的主函数基于QMainWindow,然后我在此工程上再添加了Qwidget类,在QWidget里面进行绘 ...

听得也不是很明白,实在不会可以把程序发到 874823787@qq.com ,我试试帮你看看!
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2017-11-7 08:50:53 显示全部楼层
在其他的函数中调动 update,是可以的,请确认你的图片的路径正确,可能是找不到图片,
回复

使用道具 举报

累计签到:30 天
连续签到:1 天
2017-11-7 10:37:34 显示全部楼层
Since 发表于 2017-11-7 08:50
在其他的函数中调动 update,是可以的,请确认你的图片的路径正确,可能是找不到图片, ...

图片位置是正确的。我的主函数基于QMainWindow,然后我在此工程上再添加了Qwidget类,在QWidget里面进行绘制图形;但是设置Qpixmap以及调用update()都是在主函数里面调用的,这样再在Qwidget里面写:paint.drawPixmap(QPoint(0,0),pixmap);是不是你所说的位置没对呢?难道显示图片的程序也需要放到paintevent()函数里面吗?主程序里的public成员照理是可以在子类使用的呀,这样右键添加的类是子类吧

点评

听得也不是很明白,实在不会可以把程序发到 ,我试试帮你看看!  详情 回复 发表于 2017-11-8 08:54
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2017-11-7 11:19:44 显示全部楼层
qt里有很多例子,随便看一个就知道了
回复

使用道具 举报

累计签到:30 天
连续签到:1 天
2017-11-7 15:15:08 显示全部楼层
llwj0303 发表于 2017-11-7 11:19
qt里有很多例子,随便看一个就知道了

例子看了很多了 要是自己能解决的就不会在这上面来提问了
回复

使用道具 举报

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

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