• 4712阅读
  • 0回复

一个重写QCanvasText的virtual void draw ( QPainter & painter )函数的问题 [复制链接]

上一主题 下一主题
离线iammm
 
只看楼主 倒序阅读 楼主  发表于: 2007-12-04
— 本帖被 XChinux 执行加亮操作(2008-07-17) —
我重写了了QCanvasText的virtual void draw ( QPainter & painter )函数,使得QCanvasText可以用QPainter来画图,但是怎么界面重绘之后字就没有了啊?


class RSCanvasText: public QCanvasText

{
public:
    RSCanvasText( const QString & t, QCanvas * canvas );
    ~RSCanvasText();
    void setRect(QRect);
protected:
    virtual void draw(QPainter&);
private:

    QRect m_rect;
};
void RSCanvasText::draw(QPainter & p)
{
    p.setFont(font());
    p.setPen(color());

    p.drawText(m_rect,textFlags(), text());
}

void RSCanvasText::setRect(QRect rect)
{
    m_rect = rect;
}

主函数
    QRect *rect = new QRect(100,100,140,80);

    RSCanvasText *Text = new RSCanvasText( "dddddddd",canvas );

    Text->setFont(QFont( "Times", 17, QFont::Bold ));
    Text->setTextFlags(Qt::AlignCenter);

    QRect rect2 = Text->boundingRect();
    rect2.moveCenter(rect->center());

    Text->setRect(rect2);
    Text->show();

求高手指点



快速回复
限100 字节
 
上一个 下一个