• 6391阅读
  • 5回复

Qt Assistant中的官方实例代码有错 [复制链接]

上一主题 下一主题
离线kika
 
只看楼主 倒序阅读 楼主  发表于: 2008-10-16
— 本帖被 XChinux 执行加亮操作(2008-10-16) —
下面是The Scribe Classes 中举例用的一段代码,大家可以亲自到Qt Assistant里面去看:

    QTextLayout textLayout(text, font);
    qreal margin = 10;
    qreal radius = qMin(width()/2.0, height()/2.0) - margin;
    QFontMetrics fm(font);

    qreal lineHeight = fm.height();
    qreal y = 0;

    textLayout.beginLayout();

    while (1) {
        // create a new line
        QTextLine line = textLayout.createLine();
        if (!line.isValid())
            break;

        qreal x1 = qMax(0.0, pow(pow(radius,2)-pow(radius-y,2), 0.5));
        qreal x2 = qMax(0.0, pow(pow(radius,2)-pow(radius-(y+lineHeight),2), 0.5));

        qreal x = qMax(x1, x2) + margin;
        qreal lineWidth = (width() - margin) - x;

        line.setLineWidth(lineWidth);
        line.setPosition(QPointF(x, margin+y));
        y += line.height();
    }

    textLayout.endLayout();

    QPainter painter;
    painter.begin(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.fillRect(rect(), Qt::white);
    painter.setBrush(QBrush(Qt::black));
    painter.setPen(QPen(Qt::black));
    textLayout.draw(&painter, QPoint(0,0));

    painter.setBrush(QBrush(QColor("#a6ce39")));
    painter.setPen(QPen(Qt::black));
    painter.drawEllipse(QRectF(-radius, margin, 2*radius, 2*radius));
    painter.end();

我的问题是:上面红色标记的两行用的pow()这个函数在Qt Assistant里面找不到,这是为什么?
如果,他不是系统提供的函数,又为何不说明其作用是什么?我花了大半天都不知道,他到底要表现什么用意??????????????????????????????
离线eralvc

只看该作者 1楼 发表于: 2008-10-16
pow是次方的意思,pow(x,3)就是x的3次方。不过我没试
离线water_wf

只看该作者 2楼 发表于: 2008-10-16
这个应该<math.h>里面求次方的函数啊
离线kika
只看该作者 3楼 发表于: 2008-10-16
楼上的大哥,就是哈。我忘记了,的却是C++里的库函数。。。。。
离线kika
只看该作者 4楼 发表于: 2008-10-16
再次谢谢你给我提个醒
离线fish1060

只看该作者 5楼 发表于: 2008-10-16
c 语言没学好
msn: qthread@live.cn
my blog: http://hi.baidu.com/gn_zone
快速回复
限100 字节
 
上一个 下一个