|
关于窗口画图的问题:窗口闪了一下又突然消失
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <qwidget.h> #include <qdialog.h> #include <qapplication.h> #include <qpainter.h> #include <qpoint.h> #include <qcolor.h> #include <qpen.h> #include "qpaintwidget.h" ConnectWidget::ConnectWidget(QWidget *parent, const char *name) :QWidget(parent,name) { setBackgroundColor(white); }; ConnectWidget::~ConnectWidget() { //delete[] points; }; void ConnectWidget::initpoints(QPoint *psrc,int num,int mode) { //这里应该无所谓的 int i; for(i=0;i<num;i++) this->points =psrc; pointnum=num; labelmode=mode; //这里应该无所谓的 };
void ConnectWidget::paintEvent(QPaintEvent* ) { //这里是画图的,应该关系不大 QPainter paint(this); QPen pen; //draw the axis //black,width 3,solid pen.setWidth(2); pen.setStyle(SolidLine); pen.setColor(black); paint.setPen(pen); paint.drawLine(QPoint(50,50),QPoint(50,400)); paint.drawLine(QPoint(50,400),QPoint(600,400)); paint.drawLine(QPoint(50,50),QPoint(45,60)); paint.drawLine(QPoint(50,50),QPoint(55,60)); paint.drawLine(QPoint(590,395),QPoint(600,400)); paint.drawLine(QPoint(590,405),QPoint(600,400));
//draw the lines pen.setWidth(1); pen.setStyle(SolidLine); pen.setColor(red); paint.setPen(pen); for(int i=0;i<pointnum-1;i++) { paint.drawLine(points, points[i+1]); }
pen.setWidth(2); pen.setStyle(SolidLine); pen.setColor(green); paint.setPen(pen); switch(labelmode) { case 1: paint.drawText(QPoint(500,50),"Time diagram",-1); break; case 2: paint.drawText(QPoint(500,50),"Speed diagram",-1); break; case 3: paint.drawText(QPoint(500,50),"Distance diagram",-1); break; case 4: paint.drawText(QPoint(500,50),"Pulse diagram",-1); break; default: break; } //这里是画图的,应该关系不大
}; 为什么我程序中 ConnectWidget cw; cw.initpoints(points,num,1); cw.resize(640,480); cw.show(); 窗口只是闪了一下就消失了,如果改成 ConnectWidget cw; cw.initpoints(points,num,1); cw.resize(640,480); cw.show(); QMessageBox::information( this, "Application name","OK"); 窗口就会显示出来。 请问如何不加QMessageBox::information( this, "Application name","OK");仍然可以显示出窗口,直到把窗口关闭。[ 此贴被inshine在2006-06-21 20:50重新编辑 ]
|