• 10099阅读
  • 2回复

关于QComboBox响应回车事件问题。 [复制链接]

上一主题 下一主题
离线bangqianchen
 

只看楼主 正序阅读 楼主  发表于: 2009-04-17
在QMainWindow的工具栏上有一个QComboBox,我子类化QMainWindow为CMainWindow,现在想让工具栏上的combox响应回车,好像没用。
我的思路:先抓CMainWIndow的KeyPressEvent事件,判断按下的键是回车后,再判断当前的控件焦点是不是在工具栏的combox上。是的话就进行处理。

void CMainWindow::keyPressEvent(QKeyEvent* evn)
{
    if(evn->type() == QEvent::KeyPress)
    {
        QKeyEvent* e = static_cast<QKeyEvent*>(evn);
        if(e->key() == Qt::Key_Enter)
        {
            AlarmBox("Enter Key down");
                       //取焦点控件。是ComBox就调用回车处理函数,还没有实现。
        }
    }
}

现在发现根本就进不了if语句。请问如何解决?谢谢!
离线bangqianchen

只看该作者 2楼 发表于: 2009-04-18
楼上正解。但是调试发现,按回车时会先激发currentIndexChanged信号,处理完了keyPressEvent才激发。
如此看来,按Combox本身就接受回车事件。

还碰到一个问题,因为ComboBox是可编辑的,按下回车时就会把当前的text作为项加入到CcomboBox中,事实上这是不希望的。要不然回车多次了,就添加了很多项,不知如何解决?
离线duduqq

只看该作者 1楼 发表于: 2009-04-17
判断条件错了,应该是if(event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
快速回复
限100 字节
 
上一个 下一个