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

📄 mainform.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.*****************************************************************************/#include <qapplication.h>#include <qtabwidget.h> #include <qpainter.h>#include <qtabbar.h>#include <string>#include <iostream>//#define LOGTEL//#define TRACEextern QApplication * a;using namespace std;void MainForm::MainForm_destroyed( QObject * ){}void MainForm::resizeEvent( QResizeEvent * e ){    int w=(e->size().width());    int h=(e->size().height());        codeLabel->move(codeLabel->x(),h-5-codeLabel->height());    codeInput->move(codeInput->x(),codeLabel->y());    StockNameOut->move(codeInput->x()+codeInput->width()+10,codeLabel->y());    quitButton->move(w-quitButton->width()-10,codeLabel->y());    indexWidget->setGeometry(0,0,w,codeLabel->height());    myTabWidget->setGeometry ( 0,indexWidget->height(),w,h-10-codeLabel->height()-indexWidget->height());    CodeNameList->move(codeInput->x(),codeInput->y()-CodeNameList->height());        MessageBox->setGeometry(MessageGroup->x()+MessageGroup->width()+5,MessageGroup->y(),w-MessageGroup->x()-MessageGroup->width()-10,myTabWidget->height()-10-40);//MessageTabPage->height()-10);}void MainForm::quitButton_clicked(){    this->close();}void MainForm::init(){#ifdef TRACE    cerr<<"MainForm init start!"<<endl;#endif    CodeTel=NULL;    currentStock=NULL;#ifdef TRACE    cerr<<"Start StockLine"<<endl;#endif        daysLine=new ZDaysLine(myTabWidget);    myTabWidget->insertTab(daysLine,QString(""));    myTabWidget->changeTab(daysLine,tr("日K线"));    connect( (daysLine->KLine), SIGNAL(getMinutes(ZDaysStruct*)),SLOT(getMinutesSlot(ZDaysStruct*)) );//    connect( (daysLine->CLine), SIGNAL(getMinutes(ZDaysStruct*)),SLOT(getMinutesSlot(ZDaysStruct*)) );#ifdef TRACE    cerr<<"Start MinutesLine"<<endl;#endif        MinutesLine=new ZMinutesLine(myTabWidget);    myTabWidget->insertTab(MinutesLine,tr("分时线"));     #ifdef TRACE    cerr<<"MinutesLine Success!"<<endl;#endif            connect( this, SIGNAL(clear()),daysLine,SLOT(clear()));    connect( this, SIGNAL(clear()),MinutesLine,SLOT(clear()));    connect( daysLine,SIGNAL(noData()),this,SLOT(getDaysTel()));    connect( MinutesLine,SIGNAL(noData()),this,SLOT(getMinutesTel()));    connect( &mySocket, SIGNAL(connected()),SLOT(socketConnect()) );    connect( &mySocket, SIGNAL(connectionClosed()),SLOT(socketConnectClosed()) ); 	      connect( &mySocket, SIGNAL(readyRead()),SLOT(socketReadyRead()) );    connect( &mySocket, SIGNAL(error(int)), SLOT(socketError(int)) );    string path=(a->applicationDirPath()+"/../etc/lqStock/").ascii();    cerr<<"PATH="<<path<<endl;        ConfFile=new ZConfFile((path+"servers.conf"));    int ServerNum=ConfFile->readInt(string("HQ_SERVER"),string("Server_Num"),0);        for(int i=0;i<ServerNum;i++)    {	QString lineName=QString("Name%1").arg(i);	ServerNameInput->insertItem(tr(QString(ConfFile->readString(string("HQ_SERVER"),(lineName).ascii(),string("noName")).c_str())),-1);    }    CurrentServer=ConfFile->readInt("HQ_SERVER","Cur_Server",0);    ServerNameInput->setCurrentItem(CurrentServer);    ServerIPInput->setText(ConfFile->readString(string("HQ_SERVER"),(QString("Address%1").arg(CurrentServer)).ascii(),"").c_str());    ServerPortInput->setText(ConfFile->readString(string("HQ_SERVER"),(QString("Port%1").arg(CurrentServer)).ascii(),"").c_str());        indexWidget=new ZStockIndexWidget(this);    connect(this,SIGNAL(setIndexData(ZCurrentIndexStruct*,ZCodeTel*)),indexWidget,SLOT(setData(ZCurrentIndexStruct*,ZCodeTel*)));    RxdTel=new ZTel();    Logined = false;    clear();    daysLine->setEnabled(false);    MinutesLine->setEnabled(false);    DisconnectButton->setEnabled(false);    CodeNameList->hide();    this->showMaximized();//    MessageBox->setGeometry(MessageGroup->x()+MessageGroup->width()+5,MessageGroup->y(),this->width()-MessageGroup->x()-MessageGroup->width()-10,MessageTabPage->height()-10);    DoDisConnect();#ifdef TRACE    cerr<<"MainForm init end!"<<endl;#endif    }void MainForm::codeInput_returnPressed(){    CodeNameList->lower();    CodeNameList->hide();    if(currentStock!=NULL)     {//	if(currentStock->getStyle()==0x10  || currentStock->getStyle()==0x20)//	{//	    myTabWidget->setCurrentPage(1);//	}//	else//	{//	    myTabWidget->setCurrentPage(2);//	}	StockNameOut->setText(tr(currentStock->getName().c_str()));	codeInput->setText(currentStock->getCode().c_str());	codeInput->selectAll();	CodeNameList->hide();    	clear();	this->setCaption(tr(getCurrentNameQString()));	StockNameOut->setText(tr(getCurrentName().c_str()));	myTabWidget->currentPage()->repaint(true);  	    }}void MainForm::ConnectButton_clicked(){    Logined=false;    codeInput->clear();    mySocket.connectToHost ( ServerIPInput->text(),ServerPortInput->text().toInt());    cerr<< "试图连接服务器 "<< ServerIPInput->text()<<":"<<ServerPortInput->text()<<" ..."<<endl;}   void MainForm::DisconnectButton_clicked(){    mySocket.close();    DoDisConnect();}void MainForm::socketConnect(){    ConnectButton->setEnabled(false);    daysLine->setEnabled(true);    MinutesLine->setEnabled(true);    DisconnectButton->setEnabled(true);        cerr<<"连接服务器成功!"<<endl;    string name=(UserInput->text()).ascii();    string pass=(PasswordInput->text()).ascii();    ZLoginTel LoginTel(name,pass);           LoginTel.send(&mySocket);    cerr<<"试图登录服务器 ...." <<endl;}void MainForm::socketConnectClosed(){    ConnectButton->setEnabled(true);    daysLine->setEnabled(false);    MinutesLine->setEnabled(false);    DisconnectButton->setEnabled(false);    cerr<<("服务器断开连接!")<<endl;}void MainForm::socketReadyRead(){    if(RxdTel->receive(&mySocket))    {	if(RxdTel->getLength()==0)	{	    cerr<<"Keep alive!"<<endl;	}	else if((RxdTel->getLength()>=4)&&(RxdTel->getCommand()==0) && (Logined==false))	{	    Logined=true;	    ZGetCodeTel GetCodeTel;	    GetCodeTel.send(&mySocket);	    cerr<<"登录成功!"<<endl;	    cerr<<"请求代码信息..."<<endl;	}	else if(RxdTel->isCodeTel())             //getCommand()==0x00000102)	{	    cerr<<"收到代码信息报文."<<endl;	    	    ZCodeTel* tel=(ZCodeTel*)RxdTel;	    #ifdef LOGTEL	    RxdTel->writeToFile("CodeTel.log");#endif	    	    int c=tel->getRecords();	    	    if(CodeTel!=NULL)delete(CodeTel);	    CodeTel=new ZCodeTel(tel);    	    setIndexData(RxdTel->getCurrentIndex(),CodeTel);	    daysLine->setData(CodeTel);	    MinutesLine->setData(CodeTel);	    	    CodeTable->setNumRows(c);	    for(int i=0;i<c;i++)	    {		ZNameCode* cc=tel->getRecord(i);		CodeTable->setText(i,0,tr(cc->getCode().c_str()));		CodeTable->setText(i,1,tr(cc->getName().c_str()));		CodeTable->setText(i,2,tr(cc->getPinYin().c_str()));		CodeTable->setText(i,3,tr(QString("%1").arg((int)cc->getStyle(),2,16)));		CodeNameList->insertItem(tr((cc->getCode()+"  "+cc->getPinYin()+"  "+cc->getName()).c_str()));	    }	  	    CodeNameList->hide();	    	    DoConnect();	}	else if(RxdTel->isDaysTel())	{	    cerr<<("收到日K线数据报文!")<<endl;	    ZDaysTel* tel=(ZDaysTel*)RxdTel;    	    setIndexData(RxdTel->getCurrentIndex(),CodeTel);	    daysLine->setData(tel,currentStock);	    #ifdef LOGTEL	    RxdTel->writeToFile(getCurrentCode()+"_Days.log");#endif	}	else if((RxdTel->getLength()>=4)&&(RxdTel->isMinutesTel()))	{	    cerr<<"收到分时线数据报文."<<endl;	    MinutesLine->setData(RxdTel,getCurrentStyle(),currentStock);	        	    setIndexData(RxdTel->getCurrentIndex(),CodeTel);#ifdef LOGTEL	    RxdTel->writeToFile(getCurrentCode()+"_Minutes.log");#endif	}	else if((RxdTel->getLength()>=4)&&(RxdTel->isOldMinutesTel()))	{    	    cerr<<("收到旧分时线数据报文.")<<endl;	    ZOldMinutesTel* tel=(ZOldMinutesTel*)RxdTel;//	    daysLine->setOldMinutes(tel->getMinutes(),tel->getMinute(0));	    daysLine->setData(tel);	    #ifdef LOGTEL	    RxdTel->writeToFile(getCurrentCode()+"_OldMinutes.log");#endif	}//	else if((RxdTel->getLength()>10)&&(*(RxdTel->getBody())==0x01))//	{//	    Memo->append(QString("Login Error: %1").arg(tr(((ZLoginBackTel*)RxdTel)->getMessage().c_str())));	    //	}	else if(RxdTel->getCommand()==0x0c01)	{	    cerr<<"信息:"<<RxdTel->getBody()+0x20<<endl;#ifdef LOGTEL	    RxdTel->writeToFile("Message.log");#endif	}	else if(RxdTel->getCommand()==0x0cc2)	{	    cerr<<"信息:"<<RxdTel->getBody()+0x20<<endl;    #ifdef LOGTEL	    RxdTel->writeToFile("CCC.log");#endif	    	}	else if(RxdTel->isBBTel())	{	    cerr<<"收到公告报文."<<endl;	    MessageBox->setText(tr(QString(((ZBBTel*)RxdTel)->getText().c_str())));#ifdef LOGTEL	    RxdTel->writeToFile("UrgentBB.log");#endif	    	}	else	{	    cerr<<(QString("Received a tel length=%1  command=%1 :").arg(RxdTel->getLength()).arg((RxdTel->getCommand()),0,16))<<endl;//	    cerr<<RxdTel->getBody()+4<<endl;	}    }}void MainForm::socketError( int e ){    mySocket.close();    cerr<<"通信错误:"<<e<<"."<<endl;}void MainForm::socketClosed(){    cerr<<("通信关闭.")<<endl;    ConnectButton->setEnabled(true);}void MainForm::ServerNameInput_textChanged( const QString & ){}void MainForm::ServerNameInput_activated( const QString & ){//    cout<<"changeServer"<<endl;    CurrentServer=ServerNameInput->currentItem();    ServerIPInput->setText(ConfFile->readString(string("HQ_SERVER"),(QString("Address%1").arg(CurrentServer)).ascii(),"").c_str());    ServerPortInput->setText(ConfFile->readString(string("HQ_SERVER"),(QString("Port%1").arg(CurrentServer)).ascii(),"").c_str());}void MainForm::destroy(){    delete(RxdTel);}void MainForm::codeInput_activated( const QString & ){    clear();    this->setCaption(getCurrentNameQString());    StockNameOut->setText(getCurrentNameQString());    myTabWidget->currentPage()->repaint();  }unsigned char MainForm::getCurrentStyle(){    return( currentStock->getStyle());}string MainForm::getCurrentCode(){    return(currentStock->getCode());}string MainForm::getCurrentName(){    return(currentStock->getName());}string MainForm::getCurrentPinYin(){    return(currentStock->getPinYin());}QString  MainForm::getCurrentNameQString(){    return(QString(getCurrentName().c_str()));}void MainForm::getMinutesSlot(ZDaysStruct* pDay ){    if(pDay==NULL)return;    ZGetOldMinutesTel tel(getCurrentCode(),getCurrentStyle(),pDay->date());    tel.send(&mySocket);}void MainForm::getMinutesTel(){    if(currentStock==NULL)return;//    ZGetMinutesDataTel tel(getCurrentCode(),getCurrentStyle(),0);    ZGetMinutesTel tel(currentStock);    tel.send(&mySocket);    cerr<<"请求("<<currentStock->getName()<<")分时线数据."<<endl; }void MainForm::getDaysTel(){    if(currentStock==NULL)return;    ZGetDaysTel tel(getCurrentCode(),getCurrentStyle());    tel.send(&mySocket);    cerr<<"请求("<<currentStock->getName()<<")日K线数据."<<endl; }void MainForm::codeInput_TextChanged( const QString &text ){    codeInput->setText(text.upper());        CodeNameList->show();    CodeNameList->raise();    if(CodeTel!=NULL)    {	currentStock=CodeTel->findNearBy((codeInput->text()).ascii());	int i;	if(currentStock==NULL)	{	    i=0;	}	else	{	    i=CodeTel->getIndex(currentStock);	}	CodeNameList->setCurrentItem(i);	CodeNameList->setTopItem(i);    }}void MainForm::DoConnect(){        MessageTabPage->setEnabled(true);	codeInput->setEnabled(true);	}void MainForm::DoDisConnect(){    if(CodeTel!=NULL)    {	delete(CodeTel);	CodeTel=NULL;    }    clear();    MessageTabPage->setEnabled(false);    daysLine->setEnabled(false);    MinutesLine->setEnabled(false);    DisconnectButton->setEnabled(false);    ConnectButton->setEnabled(true);    CodeNameList->clear();    CodeNameList->hide();    codeInput->setEnabled(false);}void MainForm::GetUrgentBB(){    ZGetUrgentBBTel tel;    MessageBox->clear();    tel.send(&mySocket);    cerr<<"请求紧急公告报文."<<endl;#ifdef LOGTEL    tel.writeToFile("GetUrgentBBTel.log");#endif}void MainForm::GetSHBB(){        ZGetSHBBTel tel;    MessageBox->clear();    tel.send(&mySocket);    cerr<<"请求上海公告报文."<<endl;#ifdef LOGTEL    tel.writeToFile("GetSHBBTel.log");#endif}void MainForm::GetSZBB(){        ZGetSZBBTel tel;    MessageBox->clear();    tel.send(&mySocket);    cerr<<"请求深圳公告报文."<<endl;#ifdef LOGTEL    tel.writeToFile("GetSZBBTel.log");#endif}void MainForm::GetQC1BB(){        ZGetQC1BBTel tel;    MessageBox->clear();    tel.send(&mySocket);    cerr<<"请求券商1公告报文."<<endl;#ifdef LOGTEL    tel.writeToFile("GetQC1BBTel.log");#endif}void MainForm::GetQC2BB(){    ZGetQC2BBTel tel;    MessageBox->clear();    tel.send(&mySocket);    cerr<<"请求券商2公告报文."<<endl;#ifdef LOGTEL    tel.writeToFile("GetQC2BBTel.log");#endif}void MainForm::GetDBBB(){        ZGetDBBBTel tel;    MessageBox->clear();    tel.send(&mySocket);    cerr<<"请求代办公告报文."<<endl;#ifdef LOGTEL    tel.writeToFile("GetDBBBTel.log");#endif}

⌨️ 快捷键说明

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