Qt滑动条的使用——QSlider

目录

  • 目录
  • 前言
  • 原理
  • 代码
  • 总结
  • 参考链接

前言

在把camshift移植到qt中时,需要滑动条来对阈值进行修改,这时候因为opencv本身的滑动条在qt中无法使用,所以想到使用QSlider来实现,感觉来说还是非常简单。做个记录!学习!分享!感谢!

原理

其实滑动条主要用来实现当滑动条的数值发生变化的时候,通过对应的文本框显示出滑动条的数值,这是滑动条最基本的功能。所以,对于滑动条的数值改变有Qt自带的信号valueChanged(),我们可以自定义槽来对滑动条数值改变做处理。
同理,如果需要在文本框中改变数值而同时修改滑动条的值,就需要另一个槽,这个没研究,不过应该很简单!

代码

  • main.cpp
#include "mydialog.h"
#include 

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 
#include 
#include 

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 

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()
{

}

总结

其实都是一种积累,越来越理解积累的意义!

参考链接

Qt基础学习(3)—–滑动条之QSlider

你可能感兴趣的:(qt)