📄 mainform.ui.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 + -