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

📄 annotation.cpp

📁 用qt做的城市电子地图
💻 CPP
字号:
#include <QtGui>#include <cmath>#include "annotation.h"Annotation::Annotation(const QString &text, bool major){    font = qApp->font();    font.setBold(true);    if (major) {        font.setPointSize(font.pointSize() + 2);        font.setStretch(QFont::SemiExpanded);    }    if (major) {        threshold = 0.01 * (40 + (std::rand() % 40));    } else {        threshold = 0.01 * (100 + (std::rand() % 100));    }    str = text;    this->major = major;    y = 20 - (std::rand() % 40);    setZValue(1000);    setFlag(ItemIgnoresTransformations, true);}void Annotation::setText(const QString &text){    prepareGeometryChange();    str = text;    update();}QString Annotation::text() const{    return str;}QRectF Annotation::boundingRect() const{    QFontMetricsF metrics(font);    QRectF rect = metrics.boundingRect(str);    rect.moveCenter(QPointF(0, y));    rect.adjust(-4, 0, +4, 0);    return rect;}void Annotation::paint(QPainter *painter,                       const QStyleOptionGraphicsItem *option,                       QWidget * /* widget */){    if (option->levelOfDetail <= threshold)        return;    painter->setFont(font);    QRectF rect = boundingRect();    int alpha = int(30 * std::log(option->levelOfDetail));    if (alpha >= 32)        painter->fillRect(rect, QColor(255, 255, 255, qMin(alpha, 63)));    painter->setPen(Qt::white);    painter->drawText(rect.translated(+1, +1), str,                      QTextOption(Qt::AlignCenter));    painter->setPen(Qt::blue);    painter->drawText(rect, str, QTextOption(Qt::AlignCenter));}

⌨️ 快捷键说明

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