QT:隐藏的小部件被返回nextInfocuschain()



我有两个复选框(qcheckbox),有时我有时会隐藏。调用hide()后,我想为父窗口小部件检索NextInfocuschain()。这将返回第一个复选框,无论它是否隐藏。难道我做错了什么?我本来以为隐藏的小部件不是焦点链的一部分,因此不应该返回。

if (shouldHideFirstCheckbox) {
    firstCheckbox.hide();
}
QCheckBox* nextWidget = dynamic_cast<QCheckBox*>(nextInFocusChain());
// nextWidget is always firstCheckbox, regardless of whether it's hidden

简短答案:是设计。

如果您查看QWidget::setTabOrder()的实现,您会发现窗口小部件的可见性未考虑:https://code.woboq.org/qt5/qtbase/src/widgets/kernel/qwidget.cpp。html#6969

最新更新