使用Qt Horizontalslider更改文本编辑的值

使用Qt Horizontalslider更改文本编辑的值,qt,Qt,我正在使用Qt5开发GUI。我想知道如何更改或设置文本编辑的值,它使用水平滑块获得一些双值 我曾尝试使用Signals/Slots方法将水平滑块连接到文本编辑,但效果不佳 下面是一个例子。使用下一个实现创建新类MyWindow: #include <QSlider> #include <QLayout> #include <QLineEdit> #include <QDebug> #include <QWidget> const fl

我正在使用Qt5开发GUI。我想知道如何更改或设置
文本编辑
的值,它使用
水平滑块
获得一些双值


我曾尝试使用Signals/Slots方法将
水平滑块
连接到
文本编辑
,但效果不佳

下面是一个例子。使用下一个实现创建新类
MyWindow

#include <QSlider>
#include <QLayout>
#include <QLineEdit>
#include <QDebug>
#include <QWidget>

const float MIN_VALUE = 0;
const float MAX_VALUE = 2;
const unsigned STEPS = 13;

class MyWindow : public QWidget {

    Q_OBJECT

private:
    QVBoxLayout *m_layout;
    QSlider *m_slider;
    QLineEdit *m_textEdit;

public:
    explicit MyWindow(QWidget *parent = 0): QWidget(parent)
    {
        m_layout = new QVBoxLayout(this);
        // Create horizontal slider and prepare it
        //   is it can change in range [MIN_VALUE; MAX_VALUE * STEPS]
        m_slider = new QSlider(Qt::Horizontal, this);
        m_slider->setMinimum(MIN_VALUE);
        m_slider->setMaximum(MAX_VALUE * STEPS);
        m_layout->addWidget(m_slider);

        m_textEdit = new QLineEdit(this);
        m_layout->addWidget(m_textEdit);

        this->setLayout(m_layout);
    }

    ~MyWindow(){}

    void setupWindow() {
        connect(m_slider, SIGNAL(valueChanged(int)), 
                    this, SLOT(updateTextOnSliderChange(int)));
    }

public slots:
    void updateTextOnSliderChange(int position) {
        // Calculate float position of slider
        float positionF = position / float(STEPS);
        m_textEdit->setText( QString::number(positionF, 'f', 2) );
    }
};
代码是非常自我解释的。所以,主要的想法是使用典型的滑块保持其在
int
中的位置,设置滑块的最小和最大位置,每次需要在
float
中获得滑块位置时,只需像
位置/点那样计算它


祝你学习好运

非常感谢,我会试试的不客气,你好!如果它能帮助您解决ypur问题,请将amswer标记为已接受。
#include <QApplication>
#include "mywindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyWindow *window = new MyWindow;
    window->setupWindow();
    window->show();
    return a.exec();
}