⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zdlinewidget.ui.h

📁 股票分析系统
💻 H
字号:
/****************************************************************************** ui.h extension file, included from the uic-generated form implementation.**** If you wish to add, delete or rename functions or slots use** Qt Designer which will update this file, preserving your code. Create an** init() function in place of a constructor, and a destroy() function in** place of a destructor.*****************************************************************************/void ZDLineWidget::init(){    zw=new ZWorld();    canClick=false;    Minutes=0;    Minute=NULL;    this->clear();}void ZDLineWidget::clear(){    LastClose=-1;    this->Tel=NULL;    this->style=0;    drawCurrent=false;}void ZDLineWidget::setLastClose(float f){    this->LastClose=f;}void ZDLineWidget::setData( ZTel* tel,ZNameCode* currentStock){    this->LastClose=currentStock->fgetLastClose();    setData(tel,currentStock->getStyle());}void ZDLineWidget::setData( ZTel* tel,unsigned char style){    this->style=style;    this->Tel=tel;    if((style==0x10) || (style==0x20))    {	if(Tel->isIndexDaysTel())				//Days MinutesData	{	    return;	    this->Minute=((ZDaysTel*)Tel)->getMinute(0);	    this->Minutes=((ZDaysTel*)Tel)->getMinutes();	}	else if (Tel->isIndexMinutesTel())                   //MinutesData	{	    this->Minute=((ZMinutesTel*)Tel)->getMinute(0);	    this->Minutes=((ZMinutesTel*)Tel)->getMinutes();//	    cerr<<"Minustes="<<Minutes<<endl;	}	else if (Tel->isOldMinutesTel())                   // Old MinutesData	{	    this->LastClose=((ZOldMinutesTel*)Tel)->fgetLastClose();	}	else	{	    return;	}    }    else     {	if(Tel->isStockDaysTel())				//Days MinutesData	{	    this->Minute=((ZDaysTel*)Tel)->getMinute(0);	    this->Minutes=((ZDaysTel*)Tel)->getMinutes();	}	else if (Tel->isStockMinutesTel())                   //MinutesData	{	    this->Minute=((ZMinutesTel*)Tel)->getMinute(0);	    this->Minutes=((ZMinutesTel*)Tel)->getMinutes();//	    cerr<<"Minustes="<<Minutes<<endl;	}	else if (Tel->isOldMinutesTel())                   // Old MinutesData	{	    this->LastClose=((ZOldMinutesTel*)Tel)->fgetLastClose();	}	else	{	    return;	}	    }        this->repaint();}void ZDLineWidget::setData(int Minutes,ZMinutesStruct* Minute){    this->Minutes=Minutes;    this->Minute=Minute;}void ZDLineWidget::drawRectF(QPainter *p,float x1,float y1,float x2,float y2){    int X1=zw->x(x1); int Y1=zw->y(y1); int X2=zw->x(x2); int Y2=zw->y(y2);    int X0,W,Y0,H;    if(X1<=X2)    {	X0=X1;	W=X2-X1;    }    else    {	X0=X2;	W=X1-X2;    }        if(Y1<=Y2)    {	Y0=Y1;	H=Y2-Y1;    }    else    {	Y0=Y2;	H=Y1-Y2;    }        if(W==0 || H==0)    {	p->drawLine(X0,Y0,X0+W,Y0+H);    }    else    {	p->drawRect(X0,Y0,W,H);    }}    void ZDLineWidget::paintEvent( QPaintEvent * ){    const int w0=54;int w2=42;     const int ht=12;    int mn=20;    int cn=15;    int h0=0;    if(!canClick)    {	w2=0;	mn=10;	cn=7;    }    QPainter paint( this );    paint.setFont(*TextFont);    int w=this->width();    int w1=w-w0-w2;    int h=this->height();    int h1=(h-ht-5-2)*mn/ (mn+cn);//    zw->setWorld(0,0,w,h,-1,-1,1,1);    paint.setPen(QPen(BoardColor,2));    paint.drawLine(w0,h0+h1/2,w0+w1,h0+h1/2);    paint.drawRect(w0,h0+1,w1,h1);        int h20=h1+5;int h2=h-ht-2-h20;     paint.setPen(QPen(BoardColor,2));    paint.drawRect(w0,h1+5,w1,h2);        int i;//    paint.setPen(QPen(QColor(0,0,255),0,Qt::DotLine));    paint.setPen(QPen(BoardColor,0));    for(i=1;i<mn;i++)    {	paint.drawLine(w0,h1*i/mn,w0+w1,h1*i/mn);    }    paint.setPen(QPen(BoardColor,0));    for(i=2;i<8;i=i+2)    {	paint.drawLine(w0+w1*i/8,h0,w0+w1*i/8,h1);    }    paint.setPen(QPen(BoardColor,0,Qt::DotLine));    for(i=1;i<8;i=i+2)    {	paint.drawLine(w0+w1*i/8,h0,w0+w1*i/8,h1);    }          if(Minutes==0)return;    float MAX=-1;float MIN=1E66;    for(i=0;i<Minutes;i++)    {	ZMinutesStruct *k=Minute+i;	if(MAX<k->price())MAX=k->price();	if(MIN>k->price())MIN=k->price();    }    if(LastClose>0)    {	if(fabs(MAX-LastClose)>fabs(LastClose-MIN))	{	    MIN=LastClose-fabs(MAX-LastClose);	    MAX=LastClose+fabs(MAX-LastClose);	}	else	{	    MIN=LastClose-fabs(LastClose-MIN);	    MAX=LastClose+fabs(LastClose-MIN);	}//	MAX=LastClose*1.1;//	MIN=LastClose*0.9;//	paint.drawLine(0,h/2,w,h/2);    }    paint.setPen(QPen(NameColor));        paint.drawText(0,0,w0,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1").arg(MAX,0,'f',2));    paint.drawText(w0+w1,0,w2,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1\%").arg(MAX/LastClose*100-100,0,'f',2));    paint.drawText(0,h1-ht,w0,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1").arg(MIN,0,'f',2));    paint.drawText(w0+w1,h1-ht,w2,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1\%").arg(MIN/LastClose*100-100.0,0,'f',2));    for(i=1;i<mn;i++)    {	paint.drawText(0,h1*i/mn-ht/2,w0,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1").arg(MAX-(MAX-MIN)*i/mn,0,'f',2));	paint.drawText(w0+w1,h1*i/mn-ht/2,w2,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1\%").arg((MAX-(MAX-MIN)*i/mn)/LastClose*100-100,0,'f',2));    }          zw->setWorld(w0,0,w1,h1,-0.5,MIN,((float)(Minutes)-0.5),MAX);        paint.setPen( MinutesLineColor );    paint.setBrush(MinutesLineColor);    for(i=1;i<Minutes;i++)    {	ZMinutesStruct *k=Minute+i;	paint.drawLine(zw->x(i-1),zw->y((k-1)->price()),zw->x(i),zw->y(k->price())); 	    }    if(canClick)    {	if(drawCurrent)	{	    paint.setPen( QColor(0,0,0) );	    paint.drawLine(zw->x(currentMinute),zw->y(MIN),zw->x(currentMinute),zw->y(MAX));	}    }       /////////////////////////////////     //    paint.setPen(QPen(QColor(0,0,255),0,Qt::DotLine));    paint.setPen(QPen(BoardColor,0));    for(i=1;i<cn;i++)    {	paint.drawLine(w0,h20+h2*i/cn,w0+w1,h20+h2*i/cn);    }    paint.setPen(QPen(BoardColor,0));    for(i=2;i<8;i=i+2)    {	paint.drawLine(w0+w1*i/8,h20,w0+w1*i/8,h20+h2);    }    paint.setPen(QPen(BoardColor,0,Qt::DotLine));    for(i=1;i<8;i=i+2)    {	paint.drawLine(w0+w1*i/8,h20,w0+w1*i/8,h20+h2);    }            if(Minutes==0)return;    MAX=Minute->count()/100; MIN=0;    for(i=1;i<Minutes;i++)    {	ZMinutesStruct *k=Minute+i;	if(MAX<k->count()/100-(k-1)->count()/100)MAX=k->count()/100-(k-1)->count()/100;    }      zw->setWorld(w0,h20,w1,h2,-0.5,MIN,((float)(Minutes)-0.5),MAX);        paint.setPen(QPen(NameColor));    paint.drawText(0,h20,w0,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1").arg(MAX,0,'f',0));    paint.drawText(0,h20+h2-ht,w0,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1").arg(MIN,0,'f',0));    for(i=1;i<cn;i++)    {	paint.drawText(0,h20+h2*i/cn-ht/2,w0,ht,Qt::AlignRight | Qt::AlignVCenter,QString("%1").arg(MAX-(MAX-MIN)*i/cn,0,'f',0));    }       paint.drawText(w0-w0/2,h20+h2+1,w0,ht,Qt::AlignHCenter | Qt::AlignVCenter,QString("9:30"));    paint.drawText(w0+w1/4-w0/2,h20+h2+1,w0,ht,Qt::AlignHCenter | Qt::AlignVCenter,QString("10:30"));    paint.drawText(w0+w1/2-w0/2,h20+h2+1,w0,ht,Qt::AlignHCenter | Qt::AlignVCenter,QString("11:30-13:00"));    paint.drawText(w0+w1*3/4-w0/2,h20+h2+1,w0,ht,Qt::AlignHCenter | Qt::AlignVCenter,QString("14:00"));    paint.drawText(w0+w1-w0/2,h20+h2+1,w0,ht,Qt::AlignHCenter | Qt::AlignVCenter,QString("15:00"));         paint.setPen( MinutesLineColor );    paint.setBrush(MinutesLineColor);        drawRectF(&paint,(-0.4+i),0,(0.4+i),Minute->count()/100);     for(i=1;i<Minutes;i++)    {	ZMinutesStruct *k=Minute+i;		drawRectF(&paint,(-0.4+i),0,(0.4+i),k->count()/100-(k-1)->count()/100); 	    }        if(canClick)    {	if(drawCurrent)	{	    paint.setPen( QColor(0,0,0) );	    paint.drawLine(zw->x(currentMinute),zw->y(MIN),zw->x(currentMinute),zw->y(MAX));	    writeCurrent(&paint,0,0,w0,175);	}    }}void ZDLineWidget::writeCurrent(QPainter* p,int x,int y,int w,int h){//    p->setRasterOp ( Qt::XorROP ) ;    p->setPen( PopColor );    p->setBrush(PopColor);        p->drawRect(x,y,w,h);    p->setPen((NameColor));    int ht=h/10;    zDrawText(p,x,y,w+2,ht,Qt::AlignLeft | Qt::AlignVCenter,tr(QString("时间:")),NameColor);    zDrawText(p,x,y+ht,w+2,ht,Qt::AlignLeft | Qt::AlignVCenter,tr(QString(sgetTime(currentMinute).c_str())),NameColor);    zDrawText(p,x,y+2*ht,w+2,ht,Qt::AlignLeft | Qt::AlignVCenter,tr(QString("最新:")),NameColor);    zDrawFloat(p,x,y+3*ht,w+2,ht,(Minute+currentMinute)->price(),LastClose);    zDrawText(p,x,y+4*ht,w+2,ht,Qt::AlignLeft | Qt::AlignVCenter,tr(QString("涨跌:")),NameColor);    zDrawFloat(p,x,y+5*ht,w+2,ht,(Minute+currentMinute)->price()-LastClose,0);   zDrawText(p,x,y+6*ht,w+2,ht,Qt::AlignLeft | Qt::AlignVCenter,tr(QString("平均:")),NameColor); //   p->drawText(x,y+7*ht,w+2,ht,Qt::AlignLeft | Qt::AlignVCenter,tr(QString("%1").arg((Minute+currentMinute)->low(),0,'f',2)));    zDrawText(p,x,y+8*ht,w+2,ht,Qt::AlignLeft | Qt::AlignVCenter,tr(QString("成交手数:")),NameColor);    int c;    if(currentMinute==0)c=(Minute+currentMinute)->count();    else c=(Minute+currentMinute)->count()-(Minute+currentMinute-1)->count();    zDrawInt(p,x,y+9*ht,w+2,ht,(c/100));}void ZDLineWidget::setCurrentMinute(int m){    this->currentMinute=m;    repaint();}void ZDLineWidget::setCanClick(bool can){    canClick=can;}void ZDLineWidget::mousePressEvent( QMouseEvent * e ){    if(Minute==NULL)return;    if(!canClick)return;    if(e->button()==Qt::RightButton)    {	drawCurrent=false;	this->repaint();	return;    }    else if(e->button()==Qt::LeftButton)    {	int cm=(int)(((double)(zw->fx(e->x())))+0.5);	if(cm<0)cm=0;	if(cm>=Minutes-1)cm=Minutes-1;	currentMinute=cm;//    ((ZMinutesLine*)(this->parent()))->setCurrentMinute(currentMinute);	drawCurrent=true;	this->repaint();//	clickMinutes(Minute+currentMinute,currentMinute);    }    else    {    }}string ZDLineWidget::sgetTime(int Time){    int H,M;    if(Time<=120)    {	H=9;	M=30;	H=H+(Time+M)/60;	M=(Time+M)%60;    }    else    {	H=13;	M=0;	H=H+(Time+M-120)/60;	M=(Time+M-120)%60;    }    string s;    stringstream ss;    ss<<H<<":"<<M;    ss>>s;    return(s);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -