c++qSlider跟随滑块显示数值
时间: 2024-01-28 16:05:06 浏览: 139
您可以通过以下步骤实现 QSlider 的滑块跟随显示数值:
1. 创建一个 QLabel 对象,用于显示数值。
2. 使用 QSlider 的 valueChanged() 信号与 QLabel 的 setGeometry() 和 setText() 槽连接,以更新 QLabel 的位置和显示的数值。
以下是示例代码:
```c++
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
QVBoxLayout *layout = new QVBoxLayout(&window);
QLabel *label = new QLabel("0", &window);
label->setAlignment(Qt::AlignHCenter);
label->setGeometry(0, 0, 50, 20);
label->show();
QSlider *slider = new QSlider(Qt::Horizontal, &window);
slider->setRange(0, 100);
slider->setValue(0);
layout->addWidget(slider);
QObject::connect(slider, &QSlider::valueChanged, [&label, &slider](int value){
QPoint pos = slider->sliderPosition();
pos.setX(pos.x() - label->width() / 2 + slider->width() * value / slider->maximum());
label->setGeometry(QRect(pos, label->size()));
label->setText(QString::number(value));
});
window.show();
return app.exec();
}
```
在这个示例中,我们创建了一个垂直布局,并将 QLabel 和 QSlider 添加到其中。然后,我们将 QSlider 的 valueChanged() 信号与一个 lambda 表达式连接,该表达式使用 QLabel 的 setGeometry() 和 setText() 槽更新 QLabel 的位置和显示的数值。在 setGeometry() 槽中,我们根据当前滑块的位置和数值计算 QLabel 的位置,并将其设置为滑块的下方。最后,我们调用 QApplication 的 exec() 函数来启动应用程序。
阅读全文