📄 drawmap.cpp
字号:
#include <qapplication.h>#include <qpainter.h>#include <stdio.h>#include <qscrollview.h>#include <qtextcodec.h>#include <qfont.h>#include <qpushbutton.h>#include <qlineedit.h>#include <qlayout.h>#include <qpixmap.h>#include <qmime.h>#include <qlistview.h>#include <qtranslator.h>#include <iostream.h>#include <string.h>#include "drawmap.h"#include "mainwindow.h"#include "mainmenu.h"struct qj{ int qjx; int qjy;}qj[3000];struct hupo{ int hpx; int hpy;}hupo[300]; struct shuiku{ int skx; int sky;}shuiku[1000];struct lvdi{ int ldx; int ldy;}lvdi[600];struct jumindi{ int jmdx; int jmdy;}jumindi[1000];struct shuangxianhe{ int sxhx; int sxhy;}shuangxianhe[1000];struct daolu1 { int dl1x; int dl1y;}daolu1[5000];struct daolu2 { int dl2x; int dl2y;}daolu2[5000]; struct daolu3 { int dl3x; int dl3y;}daolu3[25000];struct tielu { int tlx; int tly;}tielu[5000]; struct gongyuanlu{ int gylx; int gyly;}gongyuanlu[5000];struct gaosu{ int gsx; int gsy;}gaosu[100];struct qiao{ int qx; int qy;}qiao[1000];struct wenzi{ int wzx; int wzy;}wenzi[1000];struct diwu2{ int dw2x; int dw2y;}diwu2[1000];float z=1.0;float ud=0.0;float rl=0.0;float z1[100];float z2[100];FILE *fpp1;char zifu[20];int m=0;QString qs;QString Name;float x1=-100.0;float y11=-100.0;int main(int argc,char **argv){ QApplication a(argc,argv); QFont font("unifont",5); a.setFont(font); QTranslator *translator = new QTranslator(0); translator->load("drawmap.qm", "."); a.installTranslator(translator); QScrollView w; //w.setFixedSize(150,200); w.setCaption(QObject::tr("Hangzhou map")); MainWindow *m=new MainWindow; w.addChild(m); a.setMainWidget(&w); w.show(); return a.exec();}MainWindow::MainWindow(QWidget *parent,const char *name) :QWidget(parent,name){ QPushButton *enxiao=new QPushButton(tr("zoom in"),this,"enxiao"); connect(enxiao,SIGNAL(clicked()),this,SLOT(suoxiao())); QPushButton *enlarge=new QPushButton(tr("zoom out"),this,"enlarge"); connect(enlarge,SIGNAL(clicked()),this,SLOT(fangda())); QPushButton *up1=new QPushButton(tr("up"),this,"up1"); connect(up1,SIGNAL(clicked()),this,SLOT(up())); QPushButton *down1=new QPushButton(tr("down"),this,"down1"); connect(down1,SIGNAL(clicked()),this,SLOT(down())); QPushButton *right1=new QPushButton(tr("right"),this,"right1"); connect(right1,SIGNAL(clicked()),this,SLOT(right())); QPushButton *left1=new QPushButton(tr("left"),this,"left1"); connect(left1,SIGNAL(clicked()),this,SLOT(left())); QPushButton *reset1=new QPushButton(tr("reset"),this,"reset1"); connect(reset1,SIGNAL(clicked()),this,SLOT(reset())); QPushButton *routeplan=new QPushButton(tr("Route Plan"),this); connect(routeplan,SIGNAL(clicked()),this,SLOT(popupDialog()));QListView *w = new QListView(this );w->setRootIsDecorated( true );w->addColumn( QString(tr("DiMing")) );w->addColumn(QString("NUM"));QListViewItem *i1= new QListViewItem( w, QString(tr("Shangchengqu")));QListViewItem *i2 = new QListViewItem( w, QString(tr("Xihuqu")) );QListViewItem *i3 = new QListViewItem( w, QString(tr("Gongshuqu")) );QListViewItem *i4 = new QListViewItem( w, QString(tr("Xiachengqu")) );QListViewItem *i5 = new QListViewItem( w, QString(tr("Jiangganqu")) ); i1->setOpen( true ); i2->setOpen( true ); i3->setOpen( true ); i4->setOpen( true ); i5->setOpen( true ); if((fpp1=fopen("shangchengqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild(), qs, QString::number(m)); m++; } }fclose(fpp1); if((fpp1=fopen("xiachengqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild()->nextSibling(), qs,QString::number(m)); m++; } }fclose(fpp1); if((fpp1=fopen("gongshuqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild()->nextSibling()->nextSibling(), qs,QString::number(m)); m++; }}fclose(fpp1); if((fpp1=fopen("jiangganqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild()->nextSibling()->nextSibling()->nextSibling(), qs,QString::number(m)); m++; } }fclose(fpp1); if((fpp1=fopen("xihuqu.txt","r"))!=NULL) { while(fscanf(fpp1,"%f %f %s\n",&z1[m],&z2[m],zifu)==3) { QTextCodec *codec = QTextCodec::codecForName("GBK"); qs = codec->toUnicode (zifu) ; new QListViewItem( w->firstChild()->nextSibling()->nextSibling()->nextSibling()->nextSibling(), qs, QString::number(m)); m++; } }fclose(fpp1);connect(w,SIGNAL(doubleClicked( QListViewItem * )),this,SLOT(reset())); connect(w,SIGNAL(doubleClicked( QListViewItem * )),this,SLOT(chaxun( QListViewItem *)));connect(w,SIGNAL(doubleClicked( QListViewItem * )),this,SLOT(fangda()));Drawmap *na=new Drawmap(this,"Drawmap");connect(enxiao,SIGNAL(clicked()),na,SLOT(update()));connect(enlarge,SIGNAL(clicked()),na,SLOT(update())); connect(up1,SIGNAL(clicked()),na,SLOT(update())); connect(down1,SIGNAL(clicked()),na,SLOT(update()));connect(right1,SIGNAL(clicked()),na,SLOT(update()));connect(left1,SIGNAL(clicked()),na,SLOT(update())); connect(reset1,SIGNAL(clicked()),na,SLOT(update()));connect(w,SIGNAL(doubleClicked( QListViewItem * )),na,SLOT(update())); QVBoxLayout *leftLayout=new QVBoxLayout; leftLayout->addWidget(enxiao); leftLayout->addWidget(enlarge); leftLayout->addWidget(up1); leftLayout->addWidget(down1); leftLayout->addWidget(right1); leftLayout->addWidget(left1); leftLayout->addWidget(reset1); leftLayout->addWidget(routeplan); leftLayout->addWidget(w); QGridLayout *rightLayout=new QGridLayout; rightLayout->addWidget(na,0,0); QHBoxLayout *mainLayout=new QHBoxLayout(this); mainLayout->addLayout(leftLayout); mainLayout->addLayout(rightLayout);}Drawmap::Drawmap(QWidget *parent,const char *name) :QWidget(parent,name){ setBackgroundColor(QColor(225,255,255)); setFixedSize(2000,2000); }void MainWindow::suoxiao(){ ud=ud+155*(z-1); rl=rl+125*(z-1); z=z/2;}void MainWindow::fangda(){ z=z*2; ud=ud-155*(z-1); rl=rl-125*(z-1);} void MainWindow::up(){ ud=ud-30;} void MainWindow::down(){ ud=ud+30;} void MainWindow::left(){ rl=rl-30;} void MainWindow::right(){ rl=rl+30;}void MainWindow::reset(){rl=0; ud=0; z=1; x1=-100.0; y11=-100.0;}void MainWindow::popupDialog(){ mainmenubase *f = new mainmenubase( 0, "jiemian"); f->exec(); delete f;}void MainWindow::chaxun( QListViewItem *i ){ if ( !i ) return; QListViewItem *item=(QListViewItem *)i;int nx;Name=item->text(1);for(nx=0;nx<100;nx++){if(Name==QString::number(nx)){x1=z*500*(z1[nx]-120.081078)/0.167662;y11=z*607*(30.374923-z2[nx])/0.203584;rl=rl-x1+80;ud=ud-y11+80;x1=x1-50;y11=y11-80;cout<<Name<<endl;}}}void Drawmap::paintEvent(QPaintEvent *) { FILE *fdl1,*fdl2,*fdl3,*ftl,*fqj,*fhp,*fsk,*fld,*fjmd,*fgyl,*fsxh,*fgs,*fq,*fdw,*fsplm,*fdw2; char code[20]; char zhongwen[20]; long x; long y; float x2; float y2; int qjnum; int hpnum; int ldnum; int sxhnum; int sknum; int jmdnum; int i=0; int j=0; int k=0; int l=0; int m=0; int n=0; int o=0; int q=0; int r=0; int a=0; int b=0; int c=0; int d=0; int e=0; int f=0; int t1=1; int t2=1; int t3=1; int t4=1; int t5=1; QPainter p(this); if((fqj=fopen("hzqj1.txt","r"))!=NULL) { p.setBrush(QColor(255,222,222)); p.setPen(NoPen); if(fscanf(fqj,"%d",&qjnum)==1) { QPointArray parray(qjnum); for(a=0;a<qjnum;a++) { if(fscanf(fqj,"%ld %ld",&x,&y)==2) { qj[a].qjx=(int)(z*500*(x-120081078)/167662+rl); qj[a].qjy=(int)(z*607*(30374923-y)/203584+ud); parray.setPoint(a,qj[a].qjx,qj[a].qjy); } } p.drawPolygon(parray,TRUE); } fclose(fqj); } if((fqj=fopen("hzqj2.txt","r"))!=NULL) { p.setBrush(QColor(255,233,221)); p.setPen(NoPen); if(fscanf(fqj,"%d",&qjnum)==1) { QPointArray parray(qjnum); for(a=0;a<qjnum;a++) { if(fscanf(fqj,"%ld %ld",&x,&y)==2) { qj[a].qjx=(int)(z*500*(x-120081078)/167662+rl); qj[a].qjy=(int)(z*607*(30374923-y)/203584+ud); parray.setPoint(a,qj[a].qjx,qj[a].qjy); } } p.drawPolygon(parray,TRUE); } fclose(fqj); } if((fqj=fopen("hzqj3.txt","r"))!=NULL) { p.setBrush(QColor(255,246,222)); p.setPen(NoPen); if(fscanf(fqj,"%d",&qjnum)==1) { QPointArray parray(qjnum); for(a=0;a<qjnum;a++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -