gpt4 book ai didi

c++ - 编辑项目时 QAbstractItemView 选项卡焦点

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:11 25 4
gpt4 key购买 nike

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

enter image description here

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

我已经尝试使用 setTabOrder() 设置 Tab 顺序以在两个 QLineEdit 小部件之间循环,但是这仍然没有将编辑器小部件与周围的小部件。为什么会这样?

注意:我并没有尝试在其他任何地方禁用 Tab 键排序,只是暂时将它隔离到我的编辑器中。

感谢您的宝贵时间!

最佳答案

这可以使用 QWidget::focusNextPrevChild 轻松实现如下:

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;
};

关于c++ - 编辑项目时 QAbstractItemView 选项卡焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41405524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com