• 5867阅读
  • 5回复

想实现按下按钮出现一圆圈的简单程序,但每次运行按钮和圆圈就同时出现了,怎样使circle从无变有? [复制链接]

上一主题 下一主题
离线forward20cn
 

只看楼主 倒序阅读 楼主  发表于: 2009-03-18
DrawCircle::DrawCircle(QWidget *parent)
: QWidget(parent)
{
setGeometry(100,100,300,200);

push=new QPushButton("Draw it",this);
push->setGeometry(20,20,80,50);
push->setFont(QFont("Times",11,QFont::Bold));
push->show();

QObject::connect(push,SIGNAL(clicked()),this,SLOT(update()));
}

void DrawCircle::paintEvent(QPaintEvent *)
{
paint=new QPainter();
paint->begin(this);
paint->drawEllipse(150,80,100,100);
paint->setPen(Qt::PenStyle(1));
paint->end();
}

离线forward20cn

只看该作者 1楼 发表于: 2009-03-18
离线forward20cn

只看该作者 2楼 发表于: 2009-03-18
应该是我的connect环节哪个地方出了问题吧 请高手出来指点啊 急切 多谢!!!!!!!!!!!!!!!!!!!!!
离线whisper215
只看该作者 3楼 发表于: 2009-03-19
……
我也是新手,刚刚学习Qt两周,楼主的问题我自己也遇到过,所以说一下自己的想法。
像楼主这样写好像实在绘制窗体时就把椭圆画出来了,据说是没有办法不显示。所以如果想先不显示的话,可以自己定义一个公有的path。然后提供一个自己定义一个设置路径的接口,
比如setMyPath()之类的,然后在paintEvent中用panter->drawPath(path),来实现绘制,然后将
pushButton和setMyPath连接起来
QObject::connect(push,SIGNAL(clicked()),this,SLOT(setMyPath()));
我自己这样试过了,是可以的
但不知道有没有什么更好的方法,希望各位能指点一下……
离线jorneyr

只看该作者 4楼 发表于: 2009-03-20
做一个变量, 在按钮的事件处理中设置此变量的值, 然后再去调用update函数, 判断是否进行绘制圆.
void DrawCircle::paintEvent(QPaintEvent *)
{
if (true == isDraw) {
paint=new QPainter();
paint->begin(this);
paint->drawEllipse(150,80,100,100);
paint->setPen(Qt::PenStyle(1));
paint->end();
}
}
离线bingoking
只看该作者 5楼 发表于: 2009-03-20
从无到有?楼主想做成类似于一小段动画的的样子吗?
快速回复
限100 字节
 
上一个 下一个