当前位置: 代码迷 >> QT开发 >> Qlistwidget 滚动条有关问题.
  详细解决方案

Qlistwidget 滚动条有关问题.

热度:763   发布时间:2016-04-25 03:51:15.0
Qlistwidget 滚动条问题..求助!
怎么在只用键盘控制情况下,控制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楼的办法也是可以实现的。