关于通过一个按键显示和隐藏一个pushButton的程序有关问题求教

关于通过一个按键显示和隐藏一个pushButton的程序问题求教。
各位大神们,我想编一个界面,其中需要用一个按键来控制一个PushButton的显示和影藏(按一下这个按键PushButton就显示,再按一下就隐藏,如此循环),我的程序是这也的,最初PushButton默认是隐藏的:
  void Widget::keyPressEvent(QKeyEvent *k)
  {
  bool state=false;
  if(!k->key()==Qt::Key_F && state==false)
  {
  ui->pushButton->hide();//隐藏的情况下,没按就保持隐藏
  }
  else if(k->key()==Qt::Key_F && state==false)
  {
  ui->pushButton->show();//隐藏的情况下,按一下就显示
  state==true;
  }
  else if(k->key()==Qt::Key_F && state==true)
  {
  ui->pushButton->hide();//显示的情况下,再按一下就隐藏
  state==false;
  }
  else //显示的情况下,不按就保持显示
  {
  ui->pushButton->show();
  state==true;
  }
  }
但是最后运行的结果是第一次按F键的时候,pushButton可以显示,但是之后再怎么按F它都保持显示,不隐藏,请大神们帮忙看看原因吧,谢谢啦!

------解决方案--------------------
bool state=false;改为static bool state=false;