我在QScrollArea
:
scrollArea = new QScrollArea(&widget);
groupBoxLayout = new QVBoxLayout();
groupBox = new QGroupBox();
title = new QLabel();
groupBoxLayout->addWidget(title);
for(int i=0; i<WIDGETS_NUMBER; i++)
{
buttons[i] = new QPushButton();
buttons[i]->setFocusPolicy(Qt::FocusPolicy::StrongFocus);
buttons[i]->installEventFilter(this);
groupBoxLayout->addWidget(buttons[i]);
}
buttons[0]->setFocus();
现在只要buttons[]
为QPushButton
s,QScrollArea
就会自动滚动焦点更改。也就是说,当我使用向下箭头键移动按钮时,就在我到达窗口的底部边缘时,它会自动向下滚动。但是,当我将buttons[]
更改为QRadioButton
时,它会自动停止滚动。为什么会这样?当焦点到达边缘时,如何让它自动滚动?
当然,我可以检测到FocusIn
事件,并在需要时手动滚动:
scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value()+SCROLL_VALUE);
但我希望它是自动的。