zoukankan      html  css  js  c++  java
  • QT_校园导航Update

     1 //MainWidget.h
     2 
     3 #ifndef MAINWINDOW_H
     4 #define MAINWINDOW_H
     5 
     6 #include <QMainWindow>
     7 #include "mapwidget.h"
     8 #include <QToolButton>
     9 #include <QGraphicsLineItem>
    10 #include <QGraphicsScene>
    11 #include <QGraphicsView>
    12 #include <QLabel>
    13 #include <QComboBox>
    14 #include <QSpinBox>
    15 #include <QTextEdit>
    16 #include <QPainter>
    17 #include <QVector>
    18 
    19 class MainWindow : public QMainWindow
    20 {
    21     Q_OBJECT
    22 public:
    23     MainWindow(QWidget *parent = 0);
    24     ~MainWindow();
    25     void createToolBar();
    26     void paintEvent (QPaintEvent *);
    27     void setStart(int X, int Y);
    28     void setEnd(int X, int Y);
    29     void setNextPos (int index);
    30     void initScene();
    31 public slots:
    32     void setStartStation();
    33     void setEndStation();
    34     void FindPath();
    35     void Clear();
    36 private:
    37     MapWidget *mapWidget;
    38     QLabel *startLabel;
    39     QLabel *endLabel;
    40     QComboBox *startComboBox;
    41     QComboBox *endComboBox;
    42     QToolButton *findPathBtn;
    43     QToolButton *clearBtn;
    44 
    45     QGraphicsScene *scene;
    46     QGraphicsView *view;
    47 
    48     int startX, startY, endX, endY;
    49     QVector<int> nextPath;
    50 
    51     struct ArcCell{  //弧信息
    52         int adj;     //对无权图有1,0表示是否相邻,对带权图,则为权值类型
    53     //    string info; //该弧的相关信息
    54     };
    55 
    56     //内部类
    57     static const int MAX_VERTEX_NUM = 31;
    58     static const int INF = 999999;
    59 
    60     struct MGraph{
    61         QVector<int> vexs;                                    //顶点集合
    62         //临接矩阵
    63         ArcCell arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
    64         int vexnum;                                           //顶点数
    65         int arcnum;                                           //边数
    66     //    int kind;                                           //图的类型
    67     };
    68 
    69     
    70     
    71 
    72     class DijkstraFindPath
    73     {
    74     public:
    75         DijkstraFindPath();
    76         MGraph mgraph;
    77         void CreateGraph();
    78 //        void ShortestPath(int v0, PathMatrix &path, ShortPathTable &DP, int prev[]);
    79         int prev[MAX_VERTEX_NUM];  //最短路上的前驱顶点
    80         int d[MAX_VERTEX_NUM];     //表示边e = (u,v)的权值(不存在时为INF,不过d[i][i]=0)
    81         bool used[MAX_VERTEX_NUM]; //已经使用过的图
    82         void dijkstra(int startPos);      //求从起点startPos出发到各个顶点的最短距离
    83         QVector<int> get_Path(int endPos);//到顶点endPos的最短路
    84     };
    85 
    86     DijkstraFindPath *dj;
    87 };
    88 
    89 #endif // MAINWINDOW_H
      1 //MainWidget.cpp
      2 //最短路径算法,和界面的实现
      3 
      4 #include "mainwindow.h"
      5 #include <qdebug.h>
      6 #include <QToolBar>
      7 #include <QtAlgorithms>
      8 #include <iostream>
      9 
     10 MainWindow::MainWindow(QWidget *parent)
     11     : QMainWindow(parent)
     12 {
     13 //    mapWidget = new MapWidget;
     14 //    painter = new QPainter();
     15     dj = new MainWindow::DijkstraFindPath();
     16     dj->CreateGraph ();
     17 
     18     scene = new QGraphicsScene;
     19     scene->setSceneRect (-100, -100, 700, 700);
     20     initScene();
     21 
     22     view = new QGraphicsView;
     23     view->setScene (scene);
     24     view->setMinimumSize (800, 800);
     25     view->show ();
     26     setCentralWidget (view);
     27 
     28     createToolBar ();  //实现一个工具栏
     29 //    setCentralWidget (mapWidget);
     30 //    setMinimumSize (600, 400);  //设置最小尺寸
     31 }
     32 
     33 MainWindow::DijkstraFindPath::DijkstraFindPath()
     34 {
     35     mgraph.vexnum = 31;                      //初始化点数目
     36        for (int i = 0; i < mgraph.vexnum; i++) //初始化点编号
     37            mgraph.vexs.push_back (i);
     38        mgraph.arcnum = 80;                     //暂定
     39        for (int i = 0; i < mgraph.vexnum; i++) {
     40            for (int j = 0; j < mgraph.vexnum; j++) {
     41                if (i == j)
     42                    mgraph.arcs[i][j].adj = 0;
     43                else
     44                    mgraph.arcs[i][j].adj = INF;
     45    //            mgraph.arcs[i][j].info = "";
     46            }
     47        }
     48 }
     49 
     50 void MainWindow::DijkstraFindPath::CreateGraph ()
     51 {
     52         mgraph.arcs[0][1].adj = mgraph.arcs[1][0].adj = 45;    //6 - 5
     53         mgraph.arcs[0][6].adj = mgraph.arcs[6][0].adj = 165;   //6 - 10
     54         mgraph.arcs[1][2].adj = mgraph.arcs[2][1].adj = 45;    //5 - 4
     55         mgraph.arcs[2][3].adj = mgraph.arcs[3][2].adj = 45;    //4 - 3
     56         mgraph.arcs[3][4].adj = mgraph.arcs[4][3].adj = 45;    //3 - 2
     57         mgraph.arcs[3][15].adj = mgraph.arcs[15][3].adj = 24;  //3 - 22
     58         mgraph.arcs[4][5].adj = mgraph.arcs[5][4].adj = 45;    //2 - 1
     59         mgraph.arcs[13][15].adj = mgraph.arcs[15][13].adj = 85;//23 - 22
     60         mgraph.arcs[0][13].adj = mgraph.arcs[13][0].adj = 55;  //6 - 23
     61         mgraph.arcs[13][2].adj = mgraph.arcs[2][13].adj = 50;  //23 - 4
     62         mgraph.arcs[5][11].adj = mgraph.arcs[11][5].adj = 65;  //1 - 一食堂
     63         mgraph.arcs[11][12].adj = mgraph.arcs[12][11].adj = 10;//一食堂-操场
     64         mgraph.arcs[11][27].adj = mgraph.arcs[27][11].adj = 85;//一食堂-祁通1
     65         mgraph.arcs[27][28].adj = mgraph.arcs[28][27].adj = 85;//祁通1-祁通2(路口)
     66         mgraph.arcs[5][29].adj = mgraph.arcs[29][5].adj = 87;  //一食堂-岔路口
     67         mgraph.arcs[29][9].adj = mgraph.arcs[9][29].adj = 80;  //岔路-7
     68         mgraph.arcs[29][11].adj = mgraph.arcs[11][29].adj = 60;//一食堂到岔路(通向7号楼的)
     69         mgraph.arcs[29][30].adj = mgraph.arcs[30][29].adj = 32;//岔路-祁通大道
     70         mgraph.arcs[30][10].adj = mgraph.arcs[10][30].adj = 90;//祁通大道-图书馆
     71         mgraph.arcs[30][28].adj = mgraph.arcs[28][30].adj = 80;//祁通大道-祁通2
     72         mgraph.arcs[28][26].adj = mgraph.arcs[26][28].adj = 15;//祁通2-方肇周
     73         mgraph.arcs[25][27].adj = mgraph.arcs[27][25].adj = 273;    //西大门-祁通1
     74         mgraph.arcs[27][28].adj = mgraph.arcs[28][27].adj = 184;//祁通1-祁通2
     75 //        mgraph.arcs[25][12].adj = mgraph.arcs[12][25].adj = 108; //西大门-西操
     76         mgraph.arcs[5][12].adj = mgraph.arcs[12][5].adj = 70;  //1 - 操场
     77         mgraph.arcs[6][7].adj = mgraph.arcs[7][6].adj = 45;    //10 - 9
     78         mgraph.arcs[7][8].adj = mgraph.arcs[8][7].adj = 45;    //9 - 8
     79         mgraph.arcs[8][9].adj = mgraph.arcs[9][8].adj = 45;    //8 - 7
     80         mgraph.arcs[9][10].adj = mgraph.arcs[10][9].adj = 150; //7 - 图书馆
     81         mgraph.arcs[6][14].adj = mgraph.arcs[14][6].adj = 140; //10 - 13
     82         mgraph.arcs[14][16].adj = mgraph.arcs[16][14].adj = 39;//13 - 12
     83         mgraph.arcs[14][17].adj = mgraph.arcs[17][14].adj = 39;//13 - 16
     84         mgraph.arcs[16][18].adj = mgraph.arcs[18][16].adj = 39;//12 - 15
     85         mgraph.arcs[17][18].adj = mgraph.arcs[18][17].adj = 39;//16 - 15
     86         mgraph.arcs[18][19].adj = mgraph.arcs[19][18].adj = 39;//15 - 14
     87         mgraph.arcs[17][20].adj = mgraph.arcs[20][17].adj = 137;//16 - 19
     88         mgraph.arcs[20][21].adj = mgraph.arcs[21][20].adj = 39; //19 - 18
     89         mgraph.arcs[21][22].adj = mgraph.arcs[22][21].adj = 39; //18 - 17
     90         mgraph.arcs[19][22].adj = mgraph.arcs[22][19].adj = 130;//14 - 17
     91         mgraph.arcs[22][23].adj = mgraph.arcs[23][22].adj = 53; //17 - 二超
     92         mgraph.arcs[23][24].adj = mgraph.arcs[24][23].adj = 5;  //二超 - 二食堂
     93         mgraph.arcs[24][10].adj = mgraph.arcs[10][24].adj = 260;//二食堂-图书馆
     94 
     95         //以下处理细节
     96 
     97 
     98         mgraph.arcnum = 80;
     99 }
    100 
    101 void MainWindow::DijkstraFindPath::dijkstra (int startPos)
    102 {
    103     for (int i = 0; i < mgraph.vexnum; i++) d[i] = INF;
    104     for (int i = 0; i < mgraph.vexnum; i++) used[i] = false;
    105     for (int i = 0; i < mgraph.vexnum; i++) prev[i] = -1;
    106     d[startPos] = 0;
    107 
    108     while (true) {
    109         int v = -1;
    110         for (int u = 0; u < mgraph.vexnum; u++) {
    111             if (!used[u] && (v == -1 || d[u] < d[v])) v = u;
    112         }
    113 
    114         if (v == -1) break;
    115         used[v] = true;
    116 
    117         for (int u = 0; u < mgraph.vexnum; u++) {
    118             if (d[u] > d[v] + mgraph.arcs[v][u].adj) {
    119                 d[u] = d[v] + mgraph.arcs[v][u].adj;
    120                 prev[u] = v;
    121             }
    122         }
    123     }
    124 }
    125 
    126 QVector<int> MainWindow::DijkstraFindPath::get_Path (int endPos)
    127 {
    128     QVector<int> path;
    129 
    130     for ( ; endPos != -1; endPos = prev[endPos]) {
    131 //        std::cout << "EndPos: " << endPos << ", ";
    132         path.push_back (endPos);
    133     }
    134 
    135     std::reverse(path.begin (), path.end ());
    136 
    137     return path;
    138 }
    139 
    140 void MainWindow::initScene ()
    141 {
    142     QGraphicsPixmapItem *item =
    143             scene->addPixmap (QPixmap("NanTong.jpg"));
    144 //    item->setFlag (QGraphicsItem::ItemIsMovable);
    145     item->setPos (-500, -420);
    146 }
    147 
    148 MainWindow::~MainWindow()
    149 {
    150 
    151 }
    152 
    153 void MainWindow::createToolBar ()
    154 {
    155     QToolBar *toolBar = addToolBar ("Tool");
    156     startLabel = new QLabel(tr("起点: "));
    157     startComboBox = new QComboBox;
    158     startComboBox->addItem (tr("公寓6号楼"));  //0
    159     startComboBox->addItem (tr("公寓5号楼"));  //1
    160     startComboBox->addItem (tr("公寓4号楼"));  //2
    161     startComboBox->addItem (tr("公寓3号楼"));  //3
    162     startComboBox->addItem (tr("公寓2号楼"));  //4
    163     startComboBox->addItem (tr("公寓1号楼"));  //5
    164 
    165     startComboBox->addItem (tr("公寓10号楼")); //6
    166     startComboBox->addItem (tr("公寓9号楼"));  //7
    167     startComboBox->addItem (tr("公寓8号楼"));  //8
    168     startComboBox->addItem (tr("公寓7号楼"));  //9
    169     startComboBox->addItem (tr("图书馆"));     //10
    170     startComboBox->addItem (tr("一食堂")); startComboBox->addItem (tr("西操场"));  //11 12
    171     startComboBox->addItem (tr("公寓23号楼")); startComboBox->addItem (tr("公寓13号楼")); //13 14
    172     startComboBox->addItem (tr("公寓22号楼")); startComboBox->addItem (tr("公寓12号楼")); //15 16
    173     startComboBox->addItem (tr("公寓楼16")); startComboBox->addItem (tr("公寓楼15"));     //17 18
    174     startComboBox->addItem (tr("公寓楼14"));  startComboBox->addItem (tr("公寓楼19"));    //19 20
    175     startComboBox->addItem (tr("公寓楼18")); startComboBox->addItem (tr("公寓楼17"));     //21 22
    176     startComboBox->addItem (tr("二超")); startComboBox->addItem (tr("二食堂"));           //23 24
    177     startComboBox->addItem (tr("西大门")); startComboBox->addItem (tr("方肇周教学楼"));    //25 26
    178 
    179     endLabel = new QLabel(tr("	终点: "));
    180 
    181     endComboBox = new QComboBox;
    182     endComboBox->addItem (tr("公寓6号楼"));
    183     endComboBox->addItem (tr("公寓5号楼"));
    184     endComboBox->addItem (tr("公寓4号楼"));
    185     endComboBox->addItem (tr("公寓3号楼"));
    186     endComboBox->addItem (tr("公寓2号楼"));
    187     endComboBox->addItem (tr("公寓1号楼"));
    188     endComboBox->addItem (tr("公寓10号楼"));
    189     endComboBox->addItem (tr("公寓9号楼"));
    190     endComboBox->addItem (tr("公寓8号楼"));
    191     endComboBox->addItem (tr("公寓7号楼"));
    192     endComboBox->addItem (tr("图书馆"));
    193     endComboBox->addItem (tr("一食堂"));    endComboBox->addItem (tr("西操场"));
    194     endComboBox->addItem (tr("公寓23号楼"));endComboBox->addItem (tr("公寓13号楼"));
    195     endComboBox->addItem (tr("公寓22号楼"));endComboBox->addItem (tr("公寓12号楼"));
    196     endComboBox->addItem (tr("公寓楼16"));  endComboBox->addItem (tr("公寓楼15"));
    197     endComboBox->addItem (tr("公寓楼14"));  endComboBox->addItem (tr("公寓楼19"));
    198     endComboBox->addItem (tr("公寓楼18"));  endComboBox->addItem (tr("公寓楼17"));
    199     endComboBox->addItem (tr("二超"));      endComboBox->addItem (tr("二食堂"));
    200     endComboBox->addItem (tr("西大门"));    endComboBox->addItem (tr("方肇周教学楼"));
    201 
    202     connect (startComboBox, SIGNAL(activated(int)), this, SLOT(setStartStation()));
    203     connect (endComboBox, SIGNAL(activated(int)), this, SLOT(setEndStation()));
    204 
    205     findPathBtn = new QToolButton;
    206     findPathBtn->setText (tr("		绘制最短路径"));
    207 
    208     connect (findPathBtn, SIGNAL(clicked(bool)), this, SLOT(FindPath()));
    209 
    210     clearBtn = new QToolButton;
    211     clearBtn->setText (tr("		清除"));
    212 
    213     connect (clearBtn, SIGNAL(clicked(bool)), this, SLOT(Clear()));
    214 
    215     toolBar->addWidget (startLabel);
    216     toolBar->addWidget (startComboBox);
    217     toolBar->addWidget (endLabel);
    218     toolBar->addWidget (endComboBox);
    219     toolBar->addWidget (findPathBtn);
    220     toolBar->addWidget (clearBtn);
    221 }
    222 
    223 void MainWindow::setStart(int X, int Y) {
    224     startX = X; startY = Y;
    225 //    qDebug() << X << ", " << Y;
    226 }
    227 
    228 void MainWindow::setEnd (int X, int Y)
    229 {
    230     endX = X; endY = Y;
    231 }
    232 
    233 void MainWindow::setStartStation ()
    234 {
    235     switch (startComboBox->currentIndex ()) {
    236     case 0:
    237         setStart(-660, -534); break;
    238     case 1:
    239         setStart (-673, -490); break;
    240     case 2:
    241         setStart (-682, -446); break;
    242     case 3:
    243         setStart (-690, -400); break;
    244     case 4:
    245         setStart (-701, -355); break;
    246     case 5:
    247         setStart (-711, -310); break;
    248     case 6:
    249         setStart (-457, -555); break;
    250     case 7:
    251         setStart (-449, -485); break;
    252     case 8:
    253         setStart(-446, -432); break;
    254     case 9:
    255         setStart (-451, -400); break;
    256     case 10:
    257         setStart (-347, -353); break;
    258     case 11:
    259         setStart (-720, -247); break;
    260     case 12:
    261         setStart (-789, -252); break;
    262     case 13:
    263         setStart (-721, -517); break;
    264     case 14:
    265         setStart (-271, -540); break;
    266     case 15:
    267         setStart (-721, -439); break;
    268     case 16:
    269         setStart (-274, -495); break;
    270     case 17:
    271         setStart (-180, -552); break;
    272     case 18:
    273         setStart (-178, -508); break;
    274     case 19:
    275         setStart (-179, -456); break;
    276     case 20:
    277         setStart (-73, -549); break;
    278     case 21:
    279         setStart (-56, -500); break;
    280     case 22:
    281         setStart (-59, -448); break;
    282     case 23:
    283         setStart (-94, -381); break;
    284     case 24:
    285         setStart (-69, -351); break;
    286     case 25:
    287         setStart (-1070, -92); break;
    288     case 26:
    289         setStart (-438, -125); break;
    290     case 27:
    291         setStart (-721, -119); break;
    292     case 28:
    293         setStart (-550, -122); break;
    294     case 29:
    295         setStart (-555, -263); break;
    296     case 30:
    297         setStart (-498, -235); break;
    298     default:
    299         break;
    300     }
    301 }
    302 
    303 void MainWindow::setEndStation ()
    304 {
    305     switch (endComboBox->currentIndex ()) {
    306     case 0:
    307         setEnd(-660, -534); break;
    308     case 1:
    309         setEnd (-673, -490); break;
    310     case 2:
    311         setEnd (-682, -446); break;
    312     case 3:
    313         setEnd (-690, -400); break;
    314     case 4:
    315         setEnd (-701, -355); break;
    316     case 5:
    317         setEnd (-711, -310); break;
    318     case 6:
    319         setEnd (-457, -555); break;
    320     case 7:
    321         setEnd (-449, -485); break;
    322     case 8:
    323         setEnd (-446, -432); break;
    324     case 9:
    325         setEnd (-451, -400); break;
    326     case 10:
    327         setEnd (-347, -353); break;
    328     case 11:
    329         setEnd (-720, -247); break;
    330     case 12:
    331         setEnd (-789, -252); break;
    332     case 13:
    333         setEnd (-721, -517); break;
    334     case 14:
    335         setEnd (-271, -540); break;
    336     case 15:
    337         setEnd (-721, -439); break;
    338     case 16:
    339         setEnd (-274, -495); break;
    340     case 17:
    341         setEnd (-180, -552); break;
    342     case 18:
    343         setEnd (-178, -508); break;
    344     case 19:
    345         setEnd (-179, -456); break;
    346     case 20:
    347         setEnd (-73, -549); break;
    348     case 21:
    349         setEnd (-56, -500); break;
    350     case 22:
    351         setEnd (-59, -448); break;
    352     case 23:
    353         setEnd (-94, -381); break;
    354     case 24:
    355         setEnd (-69, -351); break;
    356     case 25:
    357         setEnd (-1070, -92); break;
    358     case 26:
    359         setEnd (-438, -125); break;
    360     case 27:
    361         setEnd (-721, -119); break;
    362     case 28:
    363         setEnd (-550, -122); break;
    364     case 29:
    365         setEnd (-555, -263); break;
    366     case 30:
    367         setEnd (-498, -235); break;
    368     default:
    369         break;
    370     }
    371 }
    372 
    373 void MainWindow::setNextPos (int index)
    374 {
    375     switch (index) {
    376     case 0:
    377         setEnd(-660, -534); break;
    378     case 1:
    379         setEnd (-673, -490); break;
    380     case 2:
    381         setEnd (-682, -446); break;
    382     case 3:
    383         setEnd (-690, -400); break;
    384     case 4:
    385         setEnd (-701, -355); break;
    386     case 5:
    387         setEnd (-711, -310); break;
    388     case 6:
    389         setEnd (-457, -555); break;
    390     case 7:
    391         setEnd (-449, -485); break;
    392     case 8:
    393         setEnd (-446, -432); break;
    394     case 9:
    395         setEnd (-451, -400); break;
    396     case 10:
    397         setEnd (-347, -353); break;
    398     case 11:
    399         setEnd (-720, -247); break;
    400     case 12:
    401         setEnd (-789, -252); break;
    402     case 13:
    403         setEnd (-721, -517); break;
    404     case 14:
    405         setEnd (-271, -540); break;
    406     case 15:
    407         setEnd (-721, -439); break;
    408     case 16:
    409         setEnd (-274, -495); break;
    410     case 17:
    411         setEnd (-180, -552); break;
    412     case 18:
    413         setEnd (-178, -508); break;
    414     case 19:
    415         setEnd (-179, -456); break;
    416     case 20:
    417         setEnd (-73, -549); break;
    418     case 21:
    419         setEnd (-56, -500); break;
    420     case 22:
    421         setEnd (-59, -448); break;
    422     case 23:
    423         setEnd (-94, -381); break;
    424     case 24:
    425         setEnd (-69, -351); break;
    426     case 25:
    427         setEnd (-1070, -92); break;
    428     case 26:
    429         setEnd (-438, -125); break;
    430     case 27:
    431         setEnd (-721, -119); break;
    432     case 28:
    433         setEnd (-550, -122); break;
    434     case 29:
    435         setEnd (-555, -263); break;
    436     case 30:
    437         setEnd (-498, -235); break;
    438     default:
    439         break;
    440     }
    441 }
    442 
    443 void MainWindow::FindPath ()
    444 {
    445     //Demo 在图片上绘线 在原有基础上 (+700, +440);
    446     QVector<QPoint> v;
    447 
    448     dj->dijkstra (startComboBox->currentIndex ());
    449     //设置下一处的终点
    450     nextPath = dj->get_Path (endComboBox->currentIndex ());
    451 
    452     //准备绘制
    453     Clear ();
    454     //将路线绘制下来
    455     QGraphicsPathItem *item = new QGraphicsPathItem();
    456 
    457     QPen pen;
    458     pen.setWidth (4);
    459     pen.setColor (Qt::red);
    460     item->setPen (pen);
    461     item->setFlag (QGraphicsItem::ItemIsPanel);
    462 
    463 //    qDebug() << startX << " " << startY << " " << endX << " " << endY;
    464 
    465 //    qDebug() << "Hello World !";
    466 
    467     //设置起点
    468 //    v << QPoint(startX + 700, startY + 440);
    469 
    470     for (int i = 1; i < nextPath.size (); i++) {
    471         qDebug() << nextPath[i] << " , ";
    472     }
    473     scene->addItem (item);
    474 
    475     QPainterPath pa;               //path
    476 //    setNextPos (nextPath[1]);
    477 //    item->setLine (startX + 700, startY + 440, endX + 700, endY + 440);
    478     pa.moveTo (startX + 700, startY + 440);
    479 
    480     for (int i = 1; i < nextPath.size() ; i++) {
    481         setNextPos (nextPath[i]);
    482         pa.lineTo (endX + 700, endY + 440);
    483     }
    484     item->setPath (pa);
    485 
    486 }
    487 
    488 void MainWindow::Clear ()
    489 {
    490     QList<QGraphicsItem*> listItem = scene->items ();
    491     while (!listItem.empty ())
    492     {
    493         scene->removeItem (listItem.at (0));
    494         listItem.removeAt (0);
    495     }
    496     QGraphicsPixmapItem *item =
    497             scene->addPixmap (QPixmap("NanTong.jpg"));
    498 //    item->setFlag (QGraphicsItem::ItemIsMovable);
    499     item->setPos (-500, -420);
    500 }
    501 
    502 void MainWindow::paintEvent (QPaintEvent *)
    503 {
    504 
    505 }
     1 //Main.cpp
     2 #include "mainwindow.h"
     3 #include "mapwidget.h"
     4 #include <QApplication>
     5 #include <QFont>
     6 #include <QDebug>
     7 
     8 int main(int argc, char *argv[])
     9 {
    10     QApplication a(argc, argv);
    11     QFont font("ARPL KaitiM GB", 12);
    12     font.setBold (true);
    13     a.setFont (font);
    14 
    15     qDebug() << "Run............";
    16     MainWindow w;
    17     w.show ();
    18 
    19 
    20     return a.exec();
    21 }
  • 相关阅读:
    alter table add column default
    JS小知识点
    java list按照元素对象的指定多个字段属性进行排序
    Web.xml配置详解之context-param
    spring在web.xml中的配置
    Activiti工作流(4):编写一个HelloWorld
    Activiti工作流(3):activiti核心API
    Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作
    Activiti工作流框架学习(一)——环境的搭建和数据表的了解
    Redis系列之(二):Redis主从同步,读写分离
  • 原文地址:https://www.cnblogs.com/douzujun/p/6262642.html
Copyright © 2011-2022 走看看