• 4305阅读
  • 5回复

在TabDialog中画曲线遇到的问题 [复制链接]

上一主题 下一主题
离线hongwang
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-10
— 本帖被 XChinux 执行加亮操作(2008-05-12) —
大家好,我的程序中有一个TabDialog,我想在其中的一个Tab页上画函数曲线,用QPainter画。但是曲线总是显示不出来,甚至用 drawLine 函数画最简单的直线都画不出来。郁闷, 是怎么回事呢? 下面是这部分的程序, 请大家帮忙看看哪里有问题啊? 谢谢!

  1. void TabDialog::setupTab3()
  2. {
  3.     QVBox *tab3 = new QVBox( this );
  4.     tab3->setMargin( 5 );
  5.     tab3->setSpacing( 5 );
  6.    
  7.     QFrame *ecgtwo = new QFrame(tab3, "ecgtwo");
  8.     ecgtwo->setGeometry(10,10,410,350);
  9.     ecgtwo->setBackgroundColor(green);
  10.     QPainter painter(ecgtwo);
  11.     painter.setPen(Qt::blue);
  12.     QPoint beginPoint;
  13.     QPoint endPoint;
  14.     painter.drawEllipse(10,10,200,100);
  15.     beginPoint.setX(0);
  16.     beginPoint.setY(50);
  17.     endPoint.setX(300);
  18.     endPoint.setY(240);
  19.     painter.drawLine(beginPoint, endPoint);
  20.    
  21.     addTab( tab3, "Messages" );
  22. }
离线xjcook

只看该作者 1楼 发表于: 2008-05-11
你的线不是没有画出来,而是画出来后被刷掉了,你只是在构造函数中画的,而你看到窗口的时候已经不知道被刷新了多少次了,早被刷没了,想不消失的话,你需要重写 paint函数,在panint函数里面画就可以了。如果你只是想试试的话,可以放一个按钮上来,在按钮的槽里画,你会发现你点一下按钮线就出来了,但是窗口一刷新就不见了。
离线toadman
只看该作者 2楼 发表于: 2008-05-12
楼上的说的对,我也遇到过这样的问题。
离线hongwang
只看该作者 3楼 发表于: 2008-05-12
多谢指点! 我确实是在构造函数中调用的setupTab3()。

另外, 我对  “在构造函数中画的,而你看到窗口的时候已经不知道被刷新了多少次了”  这句话不大理解。  窗口为什么会刷新啊? 是Qt里面自动刷新的吗?
离线xjcook

只看该作者 4楼 发表于: 2008-05-12
窗口要显示出来,当然要出刷新了,还有窗口大小改变啥的,最大 最小化,被别的窗口盖住了之类的都会引起刷新。
你要理解你看到的显示屏幕是一个平面的,不可能显示多层的东西,这样什么显示什么不显示是操作系统要处理的,
底下的东西会被上面的盖住,再显示底下的东西的时候如果不刷新就看到一个白块了。
离线hongwang
只看该作者 5楼 发表于: 2008-05-13
明白了! 呵呵, 多谢指点!
快速回复
限100 字节
 
上一个 下一个