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

📄 qpen.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
void QPen::setStyle(Qt::PenStyle s){    if (d->style == s)        return;    detach();    d->style = s;    d->dashPattern.clear();}/*!    Returns the dash pattern of this pen.    \sa style(), isSolid() */QVector<qreal> QPen::dashPattern() const{    if (d->style == Qt::SolidLine || d->style == Qt::NoPen) {        return QVector<qreal>();    } else if (d->dashPattern.isEmpty()) {        const qreal space = 2;        const qreal dot = 1;        const qreal dash = 4;        switch (d->style) {        case Qt::DashLine:            d->dashPattern << dash << space;            break;        case Qt::DotLine:            d->dashPattern << dot << space;            break;        case Qt::DashDotLine:            d->dashPattern << dash << space << dot << space;            break;        case Qt::DashDotDotLine:            d->dashPattern << dash << space << dot << space << dot << space;            break;        default:            break;        }    }    return d->dashPattern;}/*!    Sets the dash pattern for this pen to the given \a pattern. This    implicitly converts the style of the pen to Qt::CustomDashLine.    The pattern must be specified as an even number of entries where    the entries 1, 3, 5... are the dashes and 2, 4, 6... are the    spaces. For example:    \table 100%    \row    \o \inlineimage qpen-custom.png    \o    \code    QPen pen;    QVector<qreal> dashes;    qreal space = 4;    dashes << 1 << space << 3 << space << 9 << space               << 27 << space << 9;    pen.setDashPattern(dashes);    \endcode    \endtable    The dash pattern is specified in units of the pens width, e.g. a    dash of length 5 in width 10 is 50 pixels long. Each dash is also    subject to cap styles so a dash of 1 with square cap set will    extend 0.5 pixels out in each direction resulting in a total width    of 2.    \sa setStyle(), dashPattern() */void QPen::setDashPattern(const QVector<qreal> &pattern){    if (pattern.isEmpty())        return;    detach();    d->dashPattern = pattern;    d->style = Qt::CustomDashLine;    if ((d->dashPattern.size() % 2) == 1) {        qWarning("QPen::setDashPattern(), pattern not of even length");        d->dashPattern << 1;    }}/*!    Returns the miter limit of the pen. The miter limit is only    relevant when the join style is set to Qt::MiterJoin.    \sa setMiterLimit(),  {QPen#Join Style}{Join Style}*/qreal QPen::miterLimit() const{    return d->miterLimit;}/*!    Sets the miter limit of this pen to the given \a limit.    \image qpen-miterlimit.png    The miter limit describes how far a miter join can extend from the    join point. This is used to reduce artifacts between line joins    where the lines are close to parallel.    This value does only have effect when the pen style is set to    Qt::MiterJoin. The value is specified in units of the pen's width,    e.g. a miter limit of 5 in width 10 is 50 pixels long. The default    miter limit is 2, i.e. twice the pen width in pixels.    \sa miterLimit(), setJoinStyle(), {QPen#Join Style}{Join Style}*/void QPen::setMiterLimit(qreal limit){    detach();    d->miterLimit = limit;}/*!    \fn qreal QPen::width() const    Returns the pen width with integer precision.    \sa setWidth(), widthF()*/int QPen::width() const{    return qRound(d->width);}/*!    \fn qreal QPen::widthF() const    Returns the pen width with floating point precision.    \sa setWidthF() width()*/qreal QPen::widthF() const{    return d->width;}/*!    \fn QPen::setWidth(int width)    Sets the pen width to the given  \a width with integer point precision.    A line width of zero indicates a cosmetic pen. This means that the    pen width is always drawn one pixel wide, independent of the \l    {QPainter#Coordinate Transformations}{transformation} set on the    painter.    Setting a pen width with a negative value is not supported.    \sa setWidthF(), width()*/void QPen::setWidth(int width){    if (width < 0)        qWarning("QPen::setWidth(): Setting a pen width with a negative value is not defined.");    if ((qreal)width == d->width)        return;    detach();    d->width = width;}/*!    Sets the pen width to the given \a width with floating point precision.    A line width of zero indicates a cosmetic pen. This means that the    pen width is always drawn one pixel wide, independent of the \l    {QPainter#Coordinate Transformations}{transformation} on the    painter.    Setting a pen width with a negative value is not supported.    \sa setWidth() widthF()*/void QPen::setWidthF(qreal width){    if (width < 0.f)        qWarning("QPen::setWidthF(): Setting a pen width with a negative value is not defined.");    if (qAbs(d->width - width) < 0.00000001f)        return;    detach();    d->width = width;}/*!    Returns the pen's cap style.    \sa setCapStyle(), {QPen#Cap Style}{Cap Style}*/Qt::PenCapStyle QPen::capStyle() const{    return d->capStyle;}/*!    \fn void QPen::setCapStyle(Qt::PenCapStyle style)    Sets the pen's cap style to the given \a style. The default value    is Qt::SquareCap.    \sa capStyle(), {QPen#Cap Style}{Cap Style}*/void QPen::setCapStyle(Qt::PenCapStyle c){    if (d->capStyle == c)        return;    detach();    d->capStyle = c;}/*!    Returns the pen's join style.    \sa setJoinStyle(),  {QPen#Join Style}{Join Style}*/Qt::PenJoinStyle QPen::joinStyle() const{    return d->joinStyle;}/*!    \fn void QPen::setJoinStyle(Qt::PenJoinStyle style)    Sets the pen's join style to the given \a style. The default value    is Qt::BevelJoin.    \sa joinStyle(), {QPen#Join Style}{Join Style}*/void QPen::setJoinStyle(Qt::PenJoinStyle j){    if (d->joinStyle == j)        return;    detach();    d->joinStyle = j;}/*!    \fn const QColor &QPen::color() const    Returns the color of this pen's brush.    \sa brush(), setColor()*/QColor QPen::color() const{    return d->brush.color();}/*!    \fn void QPen::setColor(const QColor &color)    Sets the color of this pen's brush to the given \a color.    \sa setBrush(), color()*/void QPen::setColor(const QColor &c){    detach();    d->brush = QBrush(c);}/*!    Returns the brush used to fill strokes generated with this pen.*/QBrush QPen::brush() const{    return d->brush;}/*!    Sets the brush used to fill strokes generated with this pen to the given    \a brush.    \sa brush(), setColor()*/void QPen::setBrush(const QBrush &brush){    detach();    d->brush = brush;}/*!    Returns true if the pen has a solid fill, otherwise false.    \sa style(), dashPattern()*/bool QPen::isSolid() const{    return d->brush.style() == Qt::SolidPattern;}/*!    \fn bool QPen::operator!=(const QPen &pen) const    Returns true if the pen is different from the given \a pen;    otherwise false. Two pens are different if they have different    styles, widths or colors.    \sa operator==()*//*!    \fn bool QPen::operator==(const QPen &pen) const    Returns true if the pen is equal to the given \a pen; otherwise    false. Two pens are equal if they have equal styles, widths and    colors.    \sa operator!=()*/bool QPen::operator==(const QPen &p) const{    return (p.d == d) || (p.d->style == d->style                          && p.d->capStyle == d->capStyle                          && p.d->joinStyle == d->joinStyle                          && p.d->width == d->width                          && p.d->miterLimit == d->miterLimit                          && (d->style != Qt::CustomDashLine                              || p.dashPattern() == dashPattern())                          && p.d->brush == d->brush);}/*!    \fn bool QPen::isDetached()    \internal*/bool QPen::isDetached(){    return d->ref == 1;}/*****************************************************************************  QPen stream functions *****************************************************************************/#ifndef QT_NO_DATASTREAM/*!    \fn QDataStream &operator<<(QDataStream &stream, const QPen &pen)    \relates QPen    Writes the given \a pen to the given \a stream and returns a reference to    the \a stream.    \sa {Format of the QDataStream Operators}*/QDataStream &operator<<(QDataStream &s, const QPen &p){    if (s.version() < 3)        s << (quint8)p.style();    else        s << (quint8)(p.style() | p.capStyle() | p.joinStyle());    if (s.version() < 7) {        s << (quint8)p.width();        s << p.color();    } else {        s << p.widthF();        s << p.brush();        s << p.miterLimit();        s << p.dashPattern();    }    return s;}/*!    \fn QDataStream &operator>>(QDataStream &stream, QPen &pen)    \relates QPen    Reads a pen from the given \a stream into the given \a pen and    returns a reference to the \a stream.    \sa {Format of the QDataStream Operators}*/QDataStream &operator>>(QDataStream &s, QPen &p){    quint8 style;    quint8 width8 = 0;    double width = 0;    QColor color;    QBrush brush;    double miterLimit = 2;    QVector<qreal> dashPattern;    s >> style;    if (s.version() < 7) {        s >> width8;        s >> color;        brush = color;        width = width8;    } else {        s >> width;        s >> brush;        s >> miterLimit;        s >> dashPattern;    }    p.detach();    p.d->width = width;    p.d->brush = brush;    p.d->style = Qt::PenStyle(style & Qt::MPenStyle);    p.d->capStyle = Qt::PenCapStyle(style & Qt::MPenCapStyle);    p.d->joinStyle = Qt::PenJoinStyle(style & Qt::MPenJoinStyle);    p.d->dashPattern = dashPattern;    p.d->miterLimit = miterLimit;    return s;}#endif //QT_NO_DATASTREAM#ifndef QT_NO_DEBUG_STREAMQDebug operator<<(QDebug dbg, const QPen &p){#ifndef Q_BROKEN_DEBUG_STREAM    dbg.nospace() << "QPen(" << p.width() << ',' << p.brush()                  << ',' << int(p.style()) << ',' << int(p.capStyle())                  << ',' << int(p.joinStyle()) << ',' << p.dashPattern()                  << ',' << p.miterLimit() << ')';    return dbg.space();#else    qWarning("This compiler doesn't support streaming QPen to QDebug");    return dbg;    Q_UNUSED(p);#endif}#endif

⌨️ 快捷键说明

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