怎么在只用键盘控制情况下,控制QlistWidget的滚动条上/下滚动 或者 QlistWidget翻页?
目前知道ListWidget获得焦点后按PageUp/PageDown可以翻页,或者通过setCurrentRow来定位光标翻页.
这两种方法都不能很好在我的程序上实现,
前者因为程序有一个LineEdit控件需要长期获得焦点,所以不能实行.
后者运算起来很慢,很麻烦.
求大神支招,有没有方法可以操作滚动条滚动或者其他方法实现ListWidget翻页?
现在有个想法,当按下PageUp/PageDown后,ListWidget获得焦点,并自行重复一次PageDown/PageDown动作,再把焦点交还给LineEdit. 但不知道怎么自行重复PageUp/PageDown按键动作...
------解决方案--------------------
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
yourLineEdit = new QLineEdit(this);
yourLineEdit->installEventFilter(this);
}
bool Widget::eventFilter(QObject *obj, QEvent *event)
{
if (obj == yourLineEdit)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key() == Qt::Key_PageDown)
{
//处理向下翻页
return true;
}
if (keyEvent->key() == Qt::Key_PageUp)
{
//处理向上翻页
return true;
}
return false;
}
else
{
return false;
}
}
else
{
return QWidget::eventFilter(obj, event);
}
}
你试试这样行不行
------解决方案--------------------
补充一下,其实3楼的办法也是可以实现的。