目录
前言
在把camshift移植到qt中时,需要滑动条来对阈值进行修改,这时候因为opencv本身的滑动条在qt中无法使用,所以想到使用QSlider来实现,感觉来说还是非常简单。做个记录!学习!分享!感谢!
原理
其实滑动条主要用来实现当滑动条的数值发生变化的时候,通过对应的文本框显示出滑动条的数值,这是滑动条最基本的功能。所以,对于滑动条的数值改变有Qt
自带的信号valueChanged()
,我们可以自定义槽来对滑动条数值改变做处理。
同理,如果需要在文本框中改变数值而同时修改滑动条的值,就需要另一个槽,这个没研究,不过应该很简单!
代码
- main.cpp
#include "mydialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyDialog w;
w.show();
return a.exec();
}
- mydialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog>
#include <QLineEdit>
#include <QSlider>
class MyDialog : public QDialog
{
Q_OBJECT
public:
explicit MyDialog(QWidget *parent = 0);
~MyDialog();
signals:
public slots:
void setLineEditValue(int value);
private:
QLineEdit *lineEdit;
QSlider* slider;
};
#endif // MYDIALOG_H
- mydialog.cpp
#include "mydialog.h"
#include <QHBoxLayout>
MyDialog::MyDialog(QWidget *parent)
: QDialog(parent)
{
lineEdit = new QLineEdit("50");
slider = new QSlider(Qt::Horizontal);
slider->setMinimum(0); // 设置滑动条的最小值
slider->setMaximum(100); // 设置滑动条的最大值
slider->setValue(50); // 设置滑动条初始值
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setLineEditValue(int)));
QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(lineEdit);
layout->addWidget(slider);
this->setLayout(layout);
this->resize(200, 50);
this->setWindowTitle("QSliderDemo");
}
void MyDialog::setLineEditValue(int value)
{
int pos = slider->value();
QString str = QString("%1").arg(pos);
lineEdit->setText(str);
}
MyDialog::~MyDialog()
{
}
总结
其实都是一种积累,越来越理解积累的意义!