当前位置: 首页 > news >正文

QT实现校园导航

导航是地图类项目实战中经常会遇到了。看上去貌似没头绪,其实是有模板遵循的。我们直接根据图看代码。

QT实现校园导航_sed_02

QT实现校园导航_i++_03

QT实现校园导航_sed_04

//MainWidget.h#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "mapwidget.h"
#include <QToolButton>
#include <QGraphicsLineItem>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QLabel>
#include <QComboBox>
#include <QSpinBox>
#include <QTextEdit>
#include <QPainter>
#include <QVector>class MainWindow : public QMainWindow
{Q_OBJECT
public:MainWindow(QWidget *parent = 0);~MainWindow();void createToolBar();void paintEvent (QPaintEvent *);void setStart(int X, int Y);void setEnd(int X, int Y);void setNextPos (int index);void initScene();
public slots:void setStartStation();void setEndStation();void FindPath();void Clear();
private:MapWidget *mapWidget;QLabel *startLabel;QLabel *endLabel;QComboBox *startComboBox;QComboBox *endComboBox;QToolButton *findPathBtn;QToolButton *clearBtn;QGraphicsScene *scene;QGraphicsView *view;int startX, startY, endX, endY;QVector<int> nextPath;struct ArcCell{  //弧信息int adj;     //对无权图有1,0表示是否相邻,对带权图,则为权值类型//    string info; //该弧的相关信息};//内部类static const int MAX_VERTEX_NUM = 31;static const int INF = 999999;struct MGraph{QVector<int> vexs;                                    //顶点集合//临接矩阵ArcCell arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];int vexnum;                                           //顶点数int arcnum;                                           //边数//    int kind;                                           //图的类型};class DijkstraFindPath{public:DijkstraFindPath();MGraph mgraph;void CreateGraph();
//        void ShortestPath(int v0, PathMatrix &path, ShortPathTable &DP, int prev[]);int prev[MAX_VERTEX_NUM];  //最短路上的前驱顶点int d[MAX_VERTEX_NUM];     //表示边e = (u,v)的权值(不存在时为INF,不过d[i][i]=0)bool used[MAX_VERTEX_NUM]; //已经使用过的图void dijkstra(int startPos);      //求从起点startPos出发到各个顶点的最短距离QVector<int> get_Path(int endPos);//到顶点endPos的最短路};DijkstraFindPath *dj;
};#endif // MAINWINDOW_H

//MainWidget.cpp
//最短路径算法,和界面的实现#include "mainwindow.h"
#include <qdebug.h>
#include <QToolBar>
#include <QtAlgorithms>
#include <iostream>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{
//    mapWidget = new MapWidget;
//    painter = new QPainter();dj = new MainWindow::DijkstraFindPath();dj->CreateGraph ();scene = new QGraphicsScene;scene->setSceneRect (-100, -100, 700, 700);initScene();view = new QGraphicsView;view->setScene (scene);view->setMinimumSize (800, 800);view->show ();setCentralWidget (view);createToolBar ();  //实现一个工具栏
//    setCentralWidget (mapWidget);
//    setMinimumSize (600, 400);  //设置最小尺寸
}
MainWindow::DijkstraFindPath::DijkstraFindPath()
{mgraph.vexnum = 31;                      //初始化点数目for (int i = 0; i < mgraph.vexnum; i++) //初始化点编号mgraph.vexs.push_back (i);mgraph

http://www.mrgr.cn/news/49817.html

相关文章:

  • 误删GreatSQL数据?别慌,Binlog来帮忙
  • 为孩子的未来铸就坚实基石
  • 【MATLAB代码,带TDOA数据导入】TDOA三维空间的位置(1主锚点、3副锚点),多个时间点、输出位置的坐标
  • TongWeb跨域问题处理
  • 细嗦Transformer(一): 整体架构及代码实现
  • 基于模糊PID的三相异步电机软起动控制
  • 网络抓包07 - 自编译openssl
  • 建造者模式(Builder Pattern)
  • 利用 LangChain 增强 LLMs 的工具调用能力:一步步实现
  • 5G 技术是如何改变数据通信的?
  • 队列和栈是什么?有什么区别?
  • Docker 部署 RocketMQ
  • 系统集成十大管理相关管理计划内容记忆篇-1
  • 【C++】C++ STL 树形结构容器全解析:map、set、multimap、multiset 的使用与区别
  • 项目管理系统如何助力新药研发?药物研发企业康诺亚上线瑞杰项目管理系统
  • 画质修复哪个软件清晰?摄影圈在用的提升画质小技巧分享
  • 国际象棋棋盘
  • 道路垃圾识别数据集 含pt模型界面 18类 共7542张图片,xml和txt标签都有;
  • 2024双十一买什么好?这些你绝对值得入手的好物推荐!
  • Harmony Navigation的使用