QTreeWidget屏蔽1到9按键响应

我想问一下关于qt的QTreeWidget里的1到9按键响应屏蔽,但是不能屏蔽上下键。重写keyPressEvent,1到9仍然会响应。添加tab键,直接1到9和上下键都不能响应了。只要屏蔽1到9,还有没有其他方法了?
void WidgetMain::keyPressEvent(QKeyEvent *e)
{
if(!e->isAutoRepeat())//此方法的作用是用于判断当前按键是否重复按下
{

    if(e->key()<=0x30 && e->key()>=0x39 )
    {
      qDebug()<<"1-9:"<<e->key();//tab and shift tab
         return;
    }
  switch(e->key())
    {
    case Qt::Key_F1:key_f1_press();break;
    case Qt::Key_Return:key_return_press();break;
    case Qt::Key_F2:key_f2_press();break;
    case Qt::Key_F3:key_f3_press();break;
    case Qt::Key_Up: qDebug()<<"UP:"<<e->key();  break;
    case Qt::Key_Down: qDebug()<<"Down:"<<e->key();  break;

}
}

如果问题解决,麻烦点个采纳!

if(e->key()<=0x30 && e->key()>=0x39 )
你这里不应该是 >= 0x30 && <= 0x39么
如果还是不行,那就老老实实的写完他吧,不要用区间进行判断了

img

在头文件里定义全局变量Num_Lock
switch(e->key())
{
case Qt::Key_F1:key_f1_press();break;
case Qt::Key_Return:key_return_press();break;
case Qt::Key_F2:key_f2_press();break;
case Qt::Key_F3:key_f3_press();break;
case Qt::Key_F6:testpic();break;
case Qt::Key_NumLock: NumLock_press(); qDebug()<<"NumLock"<<Num_Lock; break;

    case Qt::Key_0:
    case Qt::Key_1:
    case Qt::Key_2:
    case Qt::Key_3:
   case Qt::Key_4:
    case Qt::Key_5:
    case Qt::Key_6:
    case Qt::Key_7:
    case Qt::Key_8:
    case Qt::Key_9:

    default: qDebug()<<"default:"<<e->key();
      //  e->ignore();
        break;
    }

void WidgetMain::NumLock_press()
{
Num_Lock++;
if(Num_Lock==1)
{
QMessageBox::information(this,tr("提示"),tr("数字键盘已锁定:8代表向上,2代表向下。"),QMessageBox::Ok);
Num_Lock++;
}else
{
QMessageBox::information(this,tr("提示"),tr("数据键盘已开启:请使用上下键控制。"),QMessageBox::Ok);
Num_Lock=0;
}

}
重写Ke_0到key_9,对tressweight里的列表控制仍然存在,0到9仍然会随机控制。
case Qt::Key_NumLock: NumLock_press(); qDebug()<<"NumLock"<<Num_Lock; break;//用了键盘锁。
主要原因可能是焦点问题。主要问题是对于tressweght里显示的列表,重写key_0到key_9,按0到9仍然会随机跳转。查了一下,0到9对应两份地址码。可以尝试把两套都排除掉。