我在ui中添加了一个verticallayout(600px*600px),
在代码中添加了如下内容,将我自己写的一个widget嵌入了进去
MainWindow::MainWindow(QWidget *parent) :  QMainWindow(parent),  ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    w = new RenjuWidget();
    QRect r(0,0,600,600);
    ui->verticalLayout->setGeometry(r);
    ui->verticalLayout->addWidget(w);
    this->move(0,0);
}
这个widget继承自qglwidget,其中有以下内容
class RenjuWidget : public QGLWidget
{
    Q_OBJECT
public:
    RenjuWidget( QWidget * parent = 0 );
    ~RenjuWidget();
protected:
  int posx, posy;
  void initializeGL();
  void paintGL();
  void resizeGL(int width, int height);
  void keyPressEvent( QKeyEvent *e );
  void mousePressEvent(QMouseEvent *e);
};
我的鼠标响应函数是这个:
void RenjuWidget::mousePressEvent(QMouseEvent *e)
{
    if(e->button() == Qt::LeftButton)
    {
        posx = e->x();
        posy = e->y();
        cout<<posx<<"\t"<<posy<<endl;
        paintGL();
        //QMessageBox::information(NULL,QString("%1").arg(posx),QString("%1").arg(posy),QMessageBox::Ok,QMessageBox::NoButton);
        return ;
    }
}
绘制函数是这个:
void RenjuWidget::paintGL()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glLoadIdentity();
    if(posx < 300)
    {
        glTranslatef( -1.5,  0.0, -10.0 );
        glBegin( GL_TRIANGLES );
          glColor3f( 1.0, 0.0, 0.0 );
          glVertex3f(  0.0,  1.0,  0.0 );
          glColor3f( 0.0, 1.0, 0.0 );
          glVertex3f( -1.0, -1.0,  0.0 );
          glColor3f( 0.0, 0.0, 1.0 );
          glVertex3f(  1.0, -1.0,  0.0 );
        glEnd();
    }
    if(posx > 300)
    {
        glTranslatef(  1.5,  0.0,  -10.0 );
        glBegin( GL_QUADS );
          glColor3f(1.0 , 0.0 , 0.0);
          glVertex3f( -1.0,  1.0,  0.0 );
          glColor3f(0.0 , 1.0 , 0.0);
          glVertex3f(  1.0,  1.0,  0.0 );
          glColor3f(0.0 , 0.0 , 1.0);
          glVertex3f(  1.0, -1.0,  0.0 );
          glColor3f(1.0 , 1.0 , 1.0);
          glVertex3f( -1.0, -1.0,  0.0 );
        glEnd();
    }
    glLoadIdentity();
}
也就是说,如果鼠标点击坐标<300,在屏幕左侧显示一个三角形,
如果点击坐标>300,右侧显示一个正方形。
但是,在我点击之后,显示内容不会马上改变,必须要失去焦点一次之后才能改变显示内容……
(比如我点击一下界面左侧,内容不改变,我点击一下桌面,内容才发生改变)
请教各位大神