在QT

2013-02-09 47 views
0

重寫Java方法平局()我有方法draw(Graphics g)在QT

public void draw(Graphics g){ 
    switch(id){ 
     default: 
      System.out.println("Please enter a valid id in contructor"); 
      break; 
     case 1: 
      g.setColor(Color.WHITE); 
      g.fillRect(paddle.x, paddle.y, paddle.width, paddle.height); 
      break; 
     case 2: 
      g.setColor(Color.LIGHT_GRAY); 
      g.fillRect(paddle.x, paddle.y, paddle.width, paddle.height); 
      break; 
    } 
} 

如何重寫它QT?或者我應該使用什麼方法(比如Java中的keyReleased(KeyEvent e)方法在QT中是keyReleaseEvent(QKeyEvent *e))?

回答

1

這取決於你正在繪製什麼。

如果您繪製的是QWidget,它可能會是一個QWidget::paintEvent()

如果您繪製的是QGraphicsItem,它應該是一個QGraphicsItem::paint()

還,這些方法採取不同類型的參數。它可能分別是QPaintEventQPainter。請參閱相應文檔

+0

我是否需要爲我的課程繼承QWidget?或者在QMainWindow中繼承就夠了? – lapots 2013-02-09 20:43:32

+0

我不知道QMainWindow_中的_inheritance,但是如果它是QWidget類的話,那麼你應該使用'paintEvent'。我看到你正在用'fillRect'繪製形狀;如果該類應該顯示圖形的東西,我建議你看看功能強大的[Qt圖形視圖框架](http://qt-project.org/doc/qt-4.8/graphicsview.html) – azf 2013-02-09 20:48:38

+0

是的,我畫幾個矩形和一個球(乒乓球比賽) – lapots 2013-02-09 20:58:18