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

📄 cityscape.cpp

📁 用qt做的城市电子地图
💻 CPP
字号:
#include <QtGui>#include "annotation.h"#include "cityblock.h"#include "cityscape.h"#include "cityview.h"Cityscape::Cityscape(){    scene = new QGraphicsScene(-22.25, -22.25, 1980, 1980);    scene->setBackgroundBrush(QColor(255, 255, 238));    generateCityBlocks();    view = new CityView;    view->setScene(scene);    setCentralWidget(view);    setWindowTitle(tr("Cityscape"));}void Cityscape::generateCityBlocks(){    QSet<QString> names;    names << "Adams" << "Agnew" << "Arthur" << "Breckinridge"          << "Buchanan" << "Burr" << "Bush" << "Calhoun" << "Carter"          << "Cheney" << "Cleveland" << "Clinton" << "Colfax"          << "Coolidge" << "Curtis" << "Dallas" << "Dawes"          << "Eisenhower" << "Fairbanks" << "Fillmore" << "Ford"          << "Garfield" << "Garner" << "Gerry" << "Gore" << "Grant"          << "Hamlin" << "Harding" << "Harrison" << "Hayes"          << "Hendricks" << "Hobart" << "Hoover" << "Humphrey"          << "Jackson" << "Jefferson" << "Johnson" << "Kennedy"          << "King" << "Lincoln" << "Madison" << "Marshall"          << "McKinley" << "Mondale" << "Monroe" << "Morton"          << "Nixon" << "Pierce" << "Polk" << "Quayle" << "Reagan"          << "Rockefeller" << "Roosevelt" << "Sherman" << "Stevenson"          << "Taft" << "Taylor" << "Tompkins" << "Truman" << "Tyler"          << "Van Buren" << "Wallace" << "Washington" << "Wheeler"          << "Wilson";    QSetIterator<QString> i(names);    for (int y = 0; y < 44; ++y) {        for (int x = 0; x < 44; ++x) {            int percentile;            if (x > 20 && x < 24 && y > 20 && y < 24) {                percentile = std::rand() % (std::rand() % 2 != 0                                            ? 10 : 100);            } else if (x > 18 && x < 26 && y > 18 && y < 26) {                percentile = std::rand() % (rand() % 3 != 0                                            ? 10 : 100);            } else if (x > 15 && x < 29 && y > 15 && y < 29) {                percentile = std::rand() % (std::rand() % 5 != 0                                            ? 10 : 100);            } else {                percentile = std::rand() % 100;            }            CityBlock::Kind kind;            QString name;            if (percentile == 0) {                kind = CityBlock::Park;                name = tr("%1 Park");            } else if (percentile <= 2) {                kind = CityBlock::SmallBuilding;            } else if (percentile <= 4) {                kind = CityBlock::Hospital;                name = tr("%1 Hospital");            } else if (percentile == 5) {                kind = CityBlock::Hall;                name = tr("%1 Hall");            } else if (percentile <= 7) {                kind = CityBlock::Building;                name = tr("%1 Bldg");            } else if (percentile <= 9) {                kind = CityBlock::Tower;                name = tr("%1 Tower");            } else if (percentile <= 15) {                kind = CityBlock::LShapedBlock;            } else if (percentile <= 30) {                kind = CityBlock::LShapedBlockPlusSmallBlock;            } else if (percentile <= 70) {                kind = CityBlock::TwoBlocks;            } else {                kind = CityBlock::BlockPlusTwoSmallBlocks;            }            CityBlock *block = new CityBlock(kind);            block->setPos(QPointF(x * 44.5, y * 44.5));            scene->addItem(block);            if (!name.isEmpty()) {                if (!i.hasNext())                    i.toFront();                bool major = (std::rand() % 10 == 0);                Annotation *annotation =                        new Annotation(name.arg(i.next()), major);                annotation->setPos(block->pos());                scene->addItem(annotation);            }        }    }}

⌨️ 快捷键说明

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