Qt:QLineEdit 无法输入

昨天在写界面类时遇到了QLineEdit无法输入的问题,为了确定是不是QLineEdit插件的问题,新建了一个工程来测试,发现可以正常输入,所以应该是我原先界面类中的LineEdit没有获取到键盘的输入事件。

简单讲一下出现该问题的界面类:

  • 工程中有一个界面类的基类UIBase
  • 工程中所有的子界面都是通过继承UIBase来得到的,程序主要就是在这几个功能子界面间切换,之前为了防止当前子界面无法获取键盘事件的问题,在界面切换函数中已经在旧界面中释放了键盘,在新界面中获取键盘
void modeChange(Mode modeFrom, Mode modeTo)
{
  curMode = modeFrom;
  if(Start === modeFrom)
     pStart->releaseKeyboard();
  if(modeFrom == modeTo)
     reutrn;

/***********显示新界面************/
  switch(mode)
  {
    case welcome:
   {
     pWelcome->show();
     pWelcome->grabKeyboard();
     break;
   }
   case .......
  }

/**********隐藏旧界面************/
modeHide(modeFrom);
}

void modeHide(Mode modeHide)
{
  switch(modeHide)
  {
    case welcome:
    {
      pWelcome->hide();
      pWelcone->releaseKeyboard();
      break;
    }
    case ........
  }
}
  • 尽管已经让子界面类获取键盘事件,但还是无法输入
  • 解决方法:注释掉了模式切换函数中的键盘获取事件,到各个子界面类的构造函数中添加了键盘获取函数grabKeyboard(),这时lineEdit就能够获取到键盘的输入了。
  • 在子界面切换时,要记得及时获取和释放键盘输入。

你可能感兴趣的:(qt学习,qt)