QT5——SpinBox、Double SpinBox 和Slider

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxgdll/article/details/60766524

SpinBox、DoubleSpinBox、Slider三个控件的基本介绍不在这儿细讲,网上有很多相关的概念,这篇文章主要介绍,三者之间的信号槽设置。
首先创建Qt5的Gui项目,
如图:这里写图片描述

然后鼠标双击mainwindow.ui,进入页面设计界面,在选择右侧的工具栏,选择空间SpinBox,DoubleSpinBox,Horizontal Slider,构建出如下布局:
这里写图片描述
创建完这四个空间后,可以更改空间的对象名称,便于调用。
首先确定要实现的信号槽目标:
1、改变spinBox,HorizontalSlider的值改变;改变HorizontalSlider的值,spinBox的值改变
2、改变doubleSpinBox,HorizaontalSlider_2的值改变;改变HorizontalSlider_2的值,DoubleSpinBox改变。

首先先介绍最简单的信号槽设置方式,以spinBox、HorizontalSlider为例,在设计界面,点击
这里写图片描述
添加SpinBox和HorizontalSlider的信号槽映射,
如图

这里写图片描述
点击确定后,就建立了HorizontalSlider到SpinBox信号链接,同样地,建立Spinbox到HorizontalSlider的连接。
最终显示如图:
这里写图片描述
点击左侧运行,可以看到结果:
这里写图片描述

接下来,介绍另一种信号槽设置方式,
打开mainwindow.h,
添加如下代码:

private slots:
    void slotDoubleSpinbox_slider();
    void slotslider_DoubleSpinBox();

因此,最终的mainwindow.h的文件如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
private slots://槽函数声明
    void slotDoubleSpinbox_slider();
    void slotslider_DoubleSpinBox();
};

#endif // MAINWINDOW_H

声明完槽函数,就需要对槽函数进行信号连接,打开mainwindow.cpp文件,在mainwindow构造函数中增加信号和槽的映射

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->doubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(slotDoubleSpinbox_slider()));
    connect(ui->horizontalSlider_2, SIGNAL(valueChanged(int)), this, SLOT(slotslider_DoubleSpinBox()));
}

接下来,实现槽函数功能:

void MainWindow::slotDoubleSpinbox_slider()
{
    ui->horizontalSlider_2->setValue((int)(ui->doubleSpinBox->value()*100));
}
void MainWindow::slotslider_DoubleSpinBox()
{
    ui->doubleSpinBox->setValue((double)(ui->horizontalSlider_2->value())/100);
}

至此,就建立了DoubleSpinBox和Horizontal Slider的信号槽,点击运行,可以看到结果:这里写图片描述

猜你喜欢

转载自blog.csdn.net/zxgdll/article/details/60766524