Qt 如何使用键盘移动QSlider滑块手柄?

Qt 如何使用键盘移动QSlider滑块手柄?,qt,qt-creator,Qt,Qt Creator,我不知道如何在QT中移动QSlider的滑块手柄。当我按下例如A(我想向左移动)和D(我想向右移动)时,我就这样做了 实施: 与我使用函数setTickPosition()所做的相同,setliderPosition()和setTickPosition()之间的区别是什么?如何实现我的想法,thanx提前获得任何帮助我相信使用方法是在代码中移动滑块的正确方法。设置勾号的绘制方式,所以我想,这不是您需要的smth。至于拦截键盘事件:您可以在表单ui控件上安装事件过滤器,并将滑块移动逻辑放在那里。下

我不知道如何在QT中移动QSlider的滑块手柄。当我按下例如A(我想向左移动)和D(我想向右移动)时,我就这样做了

实施: 与我使用函数
setTickPosition()
所做的相同,
setliderPosition()
setTickPosition()
之间的区别是什么?如何实现我的想法,thanx提前获得任何帮助

我相信使用方法是在代码中移动滑块的正确方法。设置勾号的绘制方式,所以我想,这不是您需要的smth。至于拦截键盘事件:您可以在表单ui控件上安装事件过滤器,并将滑块移动逻辑放在那里。下面是一个例子。有关事件筛选器的详细信息

MainWindow::MainWindow(QWidget*父项):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
//将事件筛选器安装到窗口的ui控件
ui->textEdit->installEventFilter(此);
用户界面->按钮->安装事件过滤器(此);
ui->horizontalSlider->installEventFilter(此);
}
//事件过滤器实现
bool主窗口::事件过滤器(QObject*监视,QEvent*事件)
{
如果(事件->类型()==QEvent::按键)
{
QKeyEvent*keyEvent=(QKeyEvent*)事件;
如果(keyEvent->key()=='A')
{
qDebug()水平滑块->设置滑块位置(用户界面->水平滑块->滑块位置()+1);
}
否则如果(keyEvent->key()=='B')
{
qDebug()水平滑块->设置滑块位置(ui->水平滑块->滑块位置()-1);
}
}
返回QMainWindow::eventFilter(监视的,事件);
}
希望这有帮助,谢谢

(void) new QShortcut(Qt::Key_A, this, SLOT(moveTickmarkLeft()));
    (void) new QShortcut(Qt::Key_D, this, SLOT(moveTickmarkRight()));
void LCDRange::moveTickmarkLeft()
{
    slider->setSliderPosition(slider->sliderPosition - 1);
}

void LCDRange::moveTickmarkRight()
{
    slider->setSliderPosition(slider->sliderPosition + 1);
}
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // install event filter to ui controls of the window
    ui->textEdit->installEventFilter(this);
    ui->pushButton->installEventFilter(this);
    ui->horizontalSlider->installEventFilter(this);
}

// event filter implementation
bool MainWindow::eventFilter(QObject* watched, QEvent* event)
{
    if (event->type() == QEvent::KeyPress )
    {
        QKeyEvent* keyEvent = (QKeyEvent*)event;
        if (keyEvent->key()=='A')
        {
            qDebug() << "move slider";
            ui->horizontalSlider->setSliderPosition(ui->horizontalSlider->sliderPosition()+1);
        }
        else if (keyEvent->key()=='B')
        {
            qDebug() << "move slider";
            ui->horizontalSlider->setSliderPosition(ui->horizontalSlider->sliderPosition()-1);
        }

    }
    return QMainWindow::eventFilter(watched, event);
}