• 12901阅读
  • 7回复

【提问】请问:如何用QT4画图,最简单的划线 [复制链接]

上一主题 下一主题
离线slin
 
只看楼主 倒序阅读 楼主  发表于: 2006-02-15
请问:如何用QT4画图,最简单的划线:
??   我做了如下试验:先创建一个主窗口,然后希望在其中划线。结果程序可以跑,但是线却
没有在窗口中看到。
?? 请问为什么?
谢谢

QPen pen;
?? ??   pen.setWidth(10);
?? ??   pen.setStyle(Qt::SolidLine);
?? ??   QColor color(100,100,100);
?? ??   pen.setColor(color);

?? ?? QPainter paint(pb_image);
?? ??   paint.setPen(pen);
?? ??   paint.setBrush(linearGradient);
?? ??   paint.drawLine(100,200,500,600);
[ 此贴被XChinux在2006-02-15 11:20重新编辑 ]
离线mczhao
只看该作者 1楼 发表于: 2006-02-19
这个问题在Qt官方论坛上已经讨论多次了,从Qt4以后,每个Widget只能在其paintEvent函数中使用QPainter画图,所以你的代码移到paintEvent中即可。

如果想在paintEvent函数以外画图的话,据说要设置Widget的WA_PaintOutsidePaintEvent属性,但是我没有试成功,所以建议所有的绘图操作还是放在paintEvent中。下面是Qt文档中的原话:

Warning: Unless a widget has the Qt::WA_PaintOutsidePaintEvent
<qt.html#WidgetAttribute-enum> attribute set. A QPainter can only be
used on a widget inside a paintEvent() or a function called by a
paintEvent(). On Mac OS X, you can only paint on a widget in a
paintEvent() regardless of this attribute's setting.
离线slin
只看该作者 2楼 发表于: 2006-03-01
hi,大虾:
  按你的方法, 我把 代码copy到 paintEvent()中运行,可是还是不行啊。为什么啊?。。。

void Mainimpl::paintEvent(QPaintEvent *event)
  {


QPainter paint(this);
paint.setPen(Qt::red);
paint.drawText(rect(), Qt::AlignCenter, "The Text");
paint.drawLine(0,0,50,50);
paint.drawLine(10,10,70,70);
paint.drawLine(20,20,100,100);
paint.drawLine(30,30,120,120);
paint.drawLine(40,40,150,150);
paint.drawLine(50,50,200,200);


}
离线ytang
只看该作者 3楼 发表于: 2006-03-08
我是初学,谈谈我的愚见。
void Mainimpl::paintEvent(QPaintEvent *event)
{
QPainter paint(this);
paint.setPen(Qt::red);

paint.begin();         //加个开始

paint.drawText(rect(), Qt::AlignCenter, "The Text");
paint.drawLine(0,0,50,50);
paint.drawLine(10,10,70,70);
paint.drawLine(20,20,100,100);
paint.drawLine(30,30,120,120);
paint.drawLine(40,40,150,150);
paint.drawLine(50,50,200,200);

paint.end();                   //添个结束

}
离线gaoyu
只看该作者 4楼 发表于: 2006-03-10
那请问,如何才能把画上的线清除掉呢?
离线yfy002

只看该作者 5楼 发表于: 2006-03-15
下面是引用gaoyu于2006-03-09 20:12发表的:
那请问,如何才能把画上的线清除掉呢?

examples\widgets\scribble
我渴望平静,风却给了我涟漪
我的blog:
http://sungaoyong.cublog.cn
离线ren_10011
只看该作者 6楼 发表于: 2009-05-03
我也遇见了这个问题,解决不了。如果是直接写代码,是能显示出来的。但是用designer设计了,在添加这段代码,是显示不出来的。请高手们指点。
离线jerychang
只看该作者 7楼 发表于: 2010-04-18
我也是,用DESIGNER就不行
QT HAO..
快速回复
限100 字节
 
上一个 下一个