• 2840阅读
  • 1回复

[提问]QTreeView怎么响应键盘事假 [复制链接]

上一主题 下一主题
离线gaoshiqing
 

只看楼主 倒序阅读 楼主  发表于: 2017-12-15
一开始用重载keyPressEvent的方法,发现根本不能进入该函数,网上有说QTreeView可能根本就不响应这个事件,所以就用了事件过滤器,事件过滤器能进入,但是再判断时不能判断是键盘事件,请问哪里有问题或者告诉我怎么才能让它响应键盘事件,代码如下:
  1. bool TreeModelInfo::eventFilter(QObject *watched, QEvent *event)
  2. {
  3.      if(watched == this)
  4.      {
  5.           if (event->type() == QEvent::KeyPress)
  6.    {
  7.                QKeyEvent *e = static_cast<QKeyEvent*>(event);
  8.                if (e->key() == Qt::Key_Delete)
  9.                {
  10.      QModelIndex currentIndex = this->currentIndex();
  11.      QStandardItem* item = model->itemFromIndex(currentIndex);
  12.      QString strGUID = item->data(Qt::UserRole).toString();
  13.                     QUuid uid = QUuid(strGUID);
  14.                     if(!uid.isNull())
  15.      {
  16.                          RemoveVideo(uid);
  17.                          return true;
  18.                     }
  19.                }
  20.           }
  21.      }
  22.       return false;
  23. }

离线笑颜

只看该作者 1楼 发表于: 2017-12-15
你重写viewportEvent(QEvent *) ,或许会有惊喜
快速回复
限100 字节
 
上一个 下一个