QSlider

main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <QApplication>
#include <QWidget>
#include <QSlider>
#include <QLCDNumber>
#include <QVBoxLayout>
#include <qlabel.h>

void setupSliderDemo(QWidget *parent) {
QVBoxLayout *layout = new QVBoxLayout(parent);

// --- 1. 创建滑动条 ---
// Qt::Horizontal 是横向,Qt::Vertical 是纵向
QSlider *slider = new QSlider(Qt::Horizontal, parent);
slider->setRange(0, 100); // 设置范围
slider->setValue(50); // 设置初始值
slider->setTickPosition(QSlider::TicksBelow); // 在下方显示刻度点
slider->setTickInterval(10); // 每隔10个数值画一个刻度

// --- 2. 创建一个数字显示屏 (搭配滑动条非常直观) ---
QLCDNumber *lcd = new QLCDNumber(parent);
lcd->setSegmentStyle(QLCDNumber::Flat); // 设置数字样式
lcd->display(50); // 初始值

// --- 3. 信号槽连接 (3参数 Lambda 写法) ---
// 注意:QSlider 移动时触发信号 valueChanged(int)
QObject::connect(slider, &QSlider::valueChanged, [lcd](int value) {
lcd->display(value); // 让数字屏跟着动
});

// 将控件放入布局
layout->addWidget(new QLabel("拖动滑动条调节数值:"));
layout->addWidget(slider);
layout->addWidget(lcd);
}

int main(int argc, char *argv[]) {
QApplication a(argc, argv);

QWidget w;
w.setWindowTitle("QSlider 交互测试");
w.resize(300, 200);

setupSliderDemo(&w);

w.show();
return a.exec();
}