2011-05-17 98 views
2

我是Qt的新手。我正在用linux操作系统使用Qt4.7。我的应用程序被编译为嵌入式mipsel设备。在Qt中获取keyPressEvent在QLineEdit中

在我的应用程序中,有一个包含两个按钮和一个QLineEdit的QWidget。最初QLineEdit是隐藏的。

我的要求是:当我在应用程序的键盘上按下某个键时,应该显示QlineEdit并通过该键输入。之后,它应该采取所有关键输入。同时它不显示光标闪烁。

但是,当按下按键时,我的应用程序无法显示QlineEdit。

同样在输入键后,如果我点击QLineEdit框外部,它仍然可见。但现在我也无法在QLineEdit中输入密钥,即在输入密钥后,我必须点击QlineEdit的外部以在QLineEdit中显示输入的密钥。

我与尝试:

QLineEdit->setFocusPolicy(Qt::StrongFocus); 
this->setFocusPolicy(Qt::StrongFocus); 

我有一个keyPressEvent();功能。在按下按键时,我尝试显示QlineEdit。 但没有任何改进。我仍然无法解决这个问题。

有人可以给这个问题宝贵的意见吗?

如果您有任何想法,请与我分享。

在此先感谢。

+0

我真的不知道这里被问到什么,无论你想要做什么或什么不工作。 – 2011-05-17 16:58:11

回答

0

是您的keyPressEvent上包含QWidget?如果是这样的话,我想可能是它在进入QLineEdit之前吃了所有的按键。如果是这种情况,你可以使用QWidget.keyPressEvent来简单地聚焦QLineEdit,如果它离焦的话。在psuedocode:

class MyContainer(QWidget): 
    def keyPressEvent(event): 
     if my_qlineedit.isFocused(): 
      # Do nothing, call default implementation, allowing 
      # key-presses to be passed to QLineEdit normally 
      super().keyPressEvent(event) 
      return 

     else: 
      # Show QLineEdit (for first keystroke) 
      my_qlineedit.setVisible(True) 

      # Set focus for future key strokes to be sent directly to the QLineEdit 
      my_qlineedit.setFocused(True) 

      # Send this key-event to avoid missing a key 
      my_qlineedit.keyPressedEvent(event)