Qt QSlider 实现 点击到哪里 移动到哪里
时间: 2024-02-23 16:59:53 浏览: 199
Qt下用QSplitter实现滑动窗口
要实现当用户单击 QSlider 轨道时,滑块将移动到单击的位置,可以使用 `sliderPressed()` 信号和 `sliderReleased()` 信号来实现。具体步骤如下:
1. 连接 `sliderPressed()` 信号和槽函数,获取用户单击轨道时的位置。
```cpp
connect(ui->slider, &QSlider::sliderPressed, this, &MainWindow::onSliderPressed);
```
```cpp
void MainWindow::onSliderPressed()
{
int value = ui->slider->minimum() + ((ui->slider->maximum() - ui->slider->minimum()) *
(ui->slider->horizontalScrollBar()->value() - ui->slider->minimum())) /
(ui->slider->horizontalScrollBar()->maximum() - ui->slider->minimum());
ui->slider->setValue(value);
}
```
2. 连接 `sliderReleased()` 信号和槽函数,实现当用户释放鼠标按钮时,将滑块移动到单击的位置。
```cpp
connect(ui->slider, &QSlider::sliderReleased, this, &MainWindow::onSliderReleased);
```
```cpp
void MainWindow::onSliderReleased()
{
int value = ui->slider->minimum() + ((ui->slider->maximum() - ui->slider->minimum()) *
(ui->slider->horizontalScrollBar()->value() - ui->slider->minimum())) /
(ui->slider->horizontalScrollBar()->maximum() - ui->slider->minimum());
ui->slider->setValue(value);
}
```
在 `onSliderPressed()` 和 `onSliderReleased()` 槽函数中,将滑块的位置设置为用户单击轨道时的位置,即可实现当用户单击轨道时,滑块将移动到单击的位置。
阅读全文