• 3559阅读
  • 6回复

子窗体绘图问题,大家帮帮忙吧,谢谢 [复制链接]

上一主题 下一主题
离线zxclakers
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-31
子窗体实现不了paintEvent,怎么回事?
我的程序创建了一个窗体, 继承于QWidget,在里面又加入了一个scrollArea,然后在窗体类里定义了一个QWwidget,放入scrollArea,
我现在想在通过窗体里的一个按钮,一点击,掉用paintEvent,在子窗体里画线,为什么不行呢,
class show : public QWidget
{
    Q_OBJECT
public:
                    int flg;
    show( );
private:
    void paintEvent(QPaintEvent *event);
private slots:
    void mypaint();
private:
     QScrollArea *scrollArea;
    QWidget *scrollAreaWidgetContents;
    QWidget *widget;//子窗体
    QPushButton *pushButton;
};这是类定义,
connect(pushButton, SIGNAL(clicked()), widget, SLOT(mypaint()));

void show::paintEvent(QPaintEvent *event)
{
                QPainter painter;
              if(flg==1){    
                  painter.setPen(Qt::white);
                   painter.begin(widget);
    painter.drawLine(0,0,200,200);
    painter.drawEllipse(120,120,50,50);
    painter.end();
              }
}
void show::mypaint()
{
        flg=1;
update();
}
为什么不响应呢,
connect(pushButton, SIGNAL(clicked()), widget, SLOT(mypaint()));函数的第三个参数改为this倒是能响应,可显示不出线,
大家能不能帮我好好看看,教教我该怎么做
离线wato
只看该作者 1楼 发表于: 2009-07-31
是不是你没给painter传递父指针

而且你这个槽函数不是show的吗?
离线zxclakers
只看该作者 2楼 发表于: 2009-07-31
给painter传递父指针能画出图,可不在子窗体上了,
这槽不管我传的是show还是widget都画不出图啊
离线zxclakers
只看该作者 3楼 发表于: 2009-07-31
有谁能帮帮我,加我QQ吧57799681,我把源代码给看看,关键的就几十行而已,谢谢
离线wato
只看该作者 4楼 发表于: 2009-07-31
你重写的是show的paintEvent  当然画到show的对象上了
离线zxclakers
只看该作者 5楼 发表于: 2009-07-31
那我该怎么重载子窗体widget的paintevent呢,说明白一点吧,我刚接触QT,很多还不懂
离线浪迹江湖

只看该作者 6楼 发表于: 2009-07-31
以后类名不要叫show这么敏感的东西,叫Show也行阿

你把你的完整代码发上来,我看看
快速回复
限100 字节
 
上一个 下一个