首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

paintEvent被重载绘画的有关问题

2012-09-07 
paintEvent被重载绘画的问题?1)假如paintEvent被重载,里头是空的,这个控件是变成透明的吗?2)paintEvent被

paintEvent被重载绘画的问题?
1)假如paintEvent被重载,里头是空的,这个控件是变成透明的吗?
2)paintEvent被重载,为何要QPainter painter(this)才能绘画?

C/C++ code
#include <QtGui/QWidget>enum eumScaleType{    SCALE_FIX = 0,    SCALE_FREE = 1};enum eumMoveType{    DRAG_TOP_LEFT,    DRAG_TOP_RIGHT,    DRAG_BOTTOM_LEFT,    DRAG_BOTTOM_RIGHT,    DRAG_LEFTMIDDLE,    DRAG_RIGHTMIDDLE,    DRAG_TOPMIDDLE,    DRAG_BOTTOMMIDDLE,    DRAG_CENTER,    NO_ACTION};class editPainter : public QWidget{    Q_OBJECTpublic:    editPainter(QWidget* pParent=0);    void setImagePath(QString strPath);    void setScaleType(eumScaleType scaleType);protected:    virtual void paintEvent(QPaintEvent * event); //重载    virtual void mousePressEvent(QMouseEvent *event); //重载    virtual void mouseMoveEvent(QMouseEvent *event); //重载    virtual void mouseReleaseEvent(QMouseEvent *event); //重载private:    void prePaintRect();    void capturePixmap();    void calculatePaintRect(QMouseEvent *event, eumMoveType enAction);    void calculateMiniRect();private:    QPixmap *m_pPixmapSource; //源图    QPixmap *m_pPixmapCaptured; //扑捉图    QRect m_rcPixmapSource; //源图尺寸    QRect m_rcPixmapTarget; //目的图尺寸    QRect m_rectOfRedLine; //选取框尺寸    bool m_bMousePressed; //鼠标按下    bool m_bDisChangeDir; //不许变更方向    QPoint m_ptLast; //上一次鼠标位置    //矩形小方框    QRect m_rcTopLeft;    QRect m_rcTopRight;    QRect m_rcBottomLeft;    QRect m_rcBottomRight;    QRect m_rcLeftMiddle;    QRect m_rcRightMiddle;    QRect m_rcTopMiddle;    QRect m_rcBottomMiddle;    eumMoveType m_enAction; //拖动方向    eumScaleType m_eumScaleType; //比例模式signals:    void signalPixmapChange(QPixmap *pixmap); //截取图片发生变化};


[解决办法]
第一个问题,不会透明,paintEvent只是在这个画布上画东西,不管你画还是不画,这个窗体是存在的。并不会因为你不画东西而窗体不存在,或者变透明。
第二个问题,QPainter 是个画图的机制,指定this是告诉他,在this上面画图。

热点排行