QSlider与QDoubleSpinBox 小数联动代码
时间: 2024-12-20 07:26:55 浏览: 5
Qt例程源代码QSlider.7z
5星 · 资源好评率100%
在Qt中,`QSlider`和`QDoubleSpinBox`可以联动实现小数范围的变化。当用户在`QDoubleSpinBox`中输入数值时,`QSlider`会同步滑动到相应的值;反之,当用户移动`QSlider`时,`QDoubleSpinBox`会更新显示的数字。以下是基本的代码示例:
```cpp
#include <QApplication>
#include <QWidget>
#include <QSlider>
#include <QDoubleSpinBox>
class MainWindow : public QWidget {
public:
MainWindow(QWidget *parent = nullptr)
: QWidget(parent), slider(0, 0, 100), spinBox(0, 0.0, 100.0, 0.1) {
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(&slider);
layout->addWidget(&spinBox);
QObject::connect(&slider, &QSlider::valueChanged, this, [this](int value) {
spinBox.setValue(value / 100.0); // 滑块变化时,调整双精度文本框的值
});
QObject::connect(&spinBox, &QDoubleSpinBox::valueChanged, this, [this](double value) {
int newValue = static_cast<int>(value * 100); // 双精度值变化时,同步滑块位置
if (newValue >= slider.minimum() && newValue <= slider.maximum()) {
slider.setValue(newValue);
}
});
setLayout(layout);
}
private:
QSlider slider;
QDoubleSpinBox spinBox;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
```
在这个例子中,我们创建了一个窗口,包含一个`QSlider`和一个`QDoubleSpinBox`。通过`QObject::connect`将两者连接起来,实现了双向同步。
阅读全文