qslider 鼠标悬浮 显示所在刻度值 C++
时间: 2023-06-17 18:07:25 浏览: 148
要实现鼠标悬浮在 QSlider 上时显示当前所在刻度值,可以通过以下步骤:
1. 继承 QSlider 类,添加鼠标悬浮事件处理函数。
```cpp
class MySlider : public QSlider
{
Q_OBJECT
public:
explicit MySlider(QWidget *parent = nullptr);
protected:
void mouseMoveEvent(QMouseEvent *event) override;
signals:
void valueHovered(int value);
};
```
2. 在鼠标悬浮事件处理函数中,计算出当前鼠标所在的刻度值,发射信号通知界面更新。
```cpp
void MySlider::mouseMoveEvent(QMouseEvent *event)
{
int value = QStyle::sliderValueFromPosition(minimum(), maximum(), event->pos().x(), width());
emit valueHovered(value);
}
```
3. 在界面中连接信号和槽函数,更新当前刻度值的显示。
```cpp
MySlider *slider = new MySlider(this);
connect(slider, &MySlider::valueHovered, [=](int value) {
ui->label->setText(QString::number(value));
});
```
这样就可以在鼠标悬浮在 QSlider 上时显示当前所在的刻度值了。
阅读全文