以下是QT实现双滑块的示例代码,使用了QSlider控件:
#include <QtWidgets>
class DoubleSlider : public QWidget {
public:
DoubleSlider(QWidget *parent = nullptr)
: QWidget(parent) {
left_slider_ = new QSlider(Qt::Horizontal, this);
right_slider_ = new QSlider(Qt::Horizontal, this);
connect(left_slider_, &QSlider::valueChanged, this,
&DoubleSlider::leftValueChanged);
connect(right_slider_, &QSlider::valueChanged, this,
&DoubleSlider::rightValueChanged);
QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(left_slider_);
layout->addWidget(right_slider_);
}
void setRange(int min, int max) {
left_slider_->setRange(min, max);
right_slider_->setRange(min, max);
}
signals:
void leftValueChanged(int value);
void rightValueChanged(int value);
private:
QSlider *left_slider_;
QSlider *right_slider_;
};
int main(int argc, char **argv) {
QApplication app(argc, argv);
DoubleSlider double_slider;
double_slider.setRange(0, 100);
QObject::connect(&double_slider, &DoubleSlider::leftValueChanged,
[](int value) { qDebug() << "Left:" << value; });
QObject::connect(&double_slider, &DoubleSlider::rightValueChanged,
[](int value) { qDebug() << "Right:" << value; });
double_slider.show();
return app.exec();
}
在该示例中,我们定义了一个名为DoubleSlider
的自定义QWidget类。该类包含两个水平方向的QSlider控件,并连接它们的valueChanged信号到相应的槽函数中。setRange
函数用于设置QSlider的最小值和最大值。
在main
函数中,我们创建了一个DoubleSlider对象,并为其设置范围。我们还使用QObject::connect函数连接了leftValueChanged和rightValueChanged信号到lambda表达式,以便在控件的值发生变化时输出调试信息。最后,我们显示了该DoubleSlider对象并进入应用程序事件循环中。