2009-11-11 59 views
1

我有QWidget派生的类。在构造函数中我说:QT绘图不删除小部件

setPalette(QPalette(QColor(250,250,200))); 
setAutoFillBackground(true); 

然后在我的窗口小部件的paintEvent()我说:

QPainter painter(this); 
painter.drawRect(1,2,3,4); 

还有一个updateNow()槽......这只是调用update()。如何确保更新调用后我的调色板不会被擦除?

+1

对不起,我无法弄清楚你想知道什么。 解析第4行的错误。 – hirschhornsalz 2009-11-11 12:08:55

回答

4

我没有任何问题,以下内容:

#include <QApplication> 
#include <QWidget> 
#include <QPalette> 
#include <QPaintEvent> 
#include <QPainter> 

class Test : public QWidget 
{ 
public: 
    Test() 
    { 
    setPalette(QPalette(QColor(250, 250, 200))); 
    setAutoFillBackground(true); 
    } 

protected: 
    virtual void paintEvent(QPaintEvent*) 
    { 
    QPainter painter(this); 
    painter.drawRect(10, 20, 30, 40); 
    } 

    virtual void mousePressEvent(QMouseEvent*) 
    { 
    update(); 
    } 
}; 

int main(int argc, char* argv[]) 
{ 
    QApplication app(argc, argv); 

    Test myTest; 
    myTest.show(); 

    return app.exec(); 
} 

矩形平,并保持后我点击,这将触发更新。你在看什么?

+0

我也看到了!但更新后我不需要擦除小部件();功能。我需要在我的部件上绘制新的矩形:) – faya 2009-11-12 11:49:02

+0

我很抱歉。我不明白什么是错的。 – Bill 2009-11-12 12:47:59

+0

@faya。然后在绘画事件中绘制“小部件第一”,然后绘制“矩形”。 – prabhakaran 2011-05-21 06:25:56