首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编辑项目时QAbstractItemView选项卡焦点

编辑项目时QAbstractItemView选项卡焦点
EN

Stack Overflow用户
提问于 2016-12-31 04:40:44
回答 1查看 279关注 0票数 4

我有一个用模型中的项目填充的QTreeView。当对索引进行edit()调用时,将显示自定义编辑器。编辑器由两个QLineEdit小部件组成。

当按Tab时,我希望焦点在两个QLineEdit小部件之间切换。然而,按下Tab循环在我的程序中的其他一切。我的所有QPushButtonQTabWidget对象都包含在Tab顺序中,尽管它们与我的编辑器完全不同。

我尝试使用setTabOrder()设置选项卡顺序,在两个QLineEdit小部件之间循环它,但是这仍然不能将编辑器小部件与周围的小部件隔离开来。为什么会发生这种情况?

注意:我没有试图禁用其他地方的选项卡排序,只需暂时将其与我的编辑器隔离。

耽误您时间,实在对不起!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-07 07:40:08

这可以很容易地使用QWidget::focusNextPrevChild实现,如下所示:

代码语言:javascript
复制
class EditWidget : public QWidget
{
public:
  EditWidget(QWidget *pParent) : QWidget(pParent)
  {
    QHBoxLayout *pLayout = new QHBoxLayout(this);
    setLayout(pLayout);
    pLayout->addWidget(m_pEdit1 = new QLineEdit ());
    pLayout->addWidget(m_pEdit2 = new QLineEdit ());
  }

  bool focusNextPrevChild(bool next)
  {
    if (m_pEdit2->hasFocus())
      m_pEdit1->setFocus();
    else
      m_pEdit2->setFocus();
    return true; // prevent further actions (i.e. consume the (tab) event)
  }

protected:
  QLineEdit *m_pEdit1;
  QLineEdit *m_pEdit2;
};
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41405524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档