• 3771阅读
  • 4回复

[提问]如何触发绘制成员类? [复制链接]

上一主题 下一主题
离线lcl_data
 
只看楼主 倒序阅读 楼主  发表于: 2013-03-07
我的一个Area类里面有2个成员类(frame类,shadow类),当Area类需要绘制的时候如何让其2个成员类开始绘制呢?


Area,frame,shadow都是继承自QWidget, 当我在Area的paintEvent里面调用frame和shadow的paintEvent时,无法成功绘制。但是直接在Area的paintEvent用QPainter绘制的时候有图像生成,请问要如何才能实现呢?

------补充:
  1. class PBArea : public QWidget
  2. {
  3. public:
  4.     PBArea(QWidget* parent = 0);
  5.     ~PBArea(void);
  6.   
  7. protected:  
  8.     virtual void paintEvent(QPaintEvent *);  
  9. private:  
  10.     PBFrame *frame;
  11.     PBShadow  *shadow;
  12. };
PBFrame,PBShadow都是继承自QWidget的类。
我的PBArea的使用方法是:
  1. PBArea *area = new PBArea();
  2.     scene->addWidget(area);
我的问题是如何使得PBFrame和PBShadow开始绘制的?






离线pxiao_xiao

只看该作者 1楼 发表于: 2013-03-07
看问题描述 真心没看懂啊 卿
离线pxiao_xiao

只看该作者 2楼 发表于: 2013-03-07
在Area的paintEvent执行的时候 在这个paintEvent内部对你的两个包含对象 调用X->update()
离线lcl_data
只看该作者 3楼 发表于: 2013-03-07
回 2楼(pxiao_xiao) 的帖子
谢谢,我试下
离线lcl_data
只看该作者 4楼 发表于: 2013-03-07
回 2楼(pxiao_xiao) 的帖子
谢谢,问题解决了。

这里我犯了一个错误,我的PBFrame类构造函数缺少了一个
  1. explicit PBFrame(QWidget* parent = 0);

   况且在PBArea里面初始化的时候要
  1. = new PBFrame(this);

我记得在哪里看到过,继承自QWidget的类必须有一个(QWidget* parent = 0) 的构造函数。
问题解决,谢谢pxiao_xiao
快速回复
限100 字节
 
上一个 下一个