使用 QSlider 改变变量的值

Posted

技术标签:

【中文标题】使用 QSlider 改变变量的值【英文标题】:Using QSlider to change the value of a variable 【发布时间】:2013-01-02 10:11:22 【问题描述】:

我正在尝试使用QSlider 来更改变量的值,

 #include <QSlider>

class MainThread : public QWidget
Q_OBJECT
public:
MainThread(QWidget *parent=0);
private slots:
    void setValue(double);
private:
QSlider *slider; 
;

MainThread::MainThread(QWidget *parent):QWidget(parent)
    slider = new QSlider(Qt::Horizontal,0);
    connect(&slider, SIGNAL((slider->valueChanged())),
             this, SLOT(setValue(double))); // here's my  problem 
    ...

我的问题是如何将滑块的SIGNAL 连接到setValue(double) SLOT。

提前致谢。

【问题讨论】:

您为什么不阅读 Qt 文档?有“入门”教程,您将在其中学习如何使用 Qt 信号和插槽 我做了,它只是我代码的一部分,我一直在使用 SLOTS 和 SIGNAL,但它不适用于 QSLIDER 【参考方案1】:

slider 已经是一个指针,例如删除'&'

connect( slider, SIGNAL((slider->valueChanged())), this, SLOT(setValue(double)) );

编辑:这不起作用,因为信号没有参数。 将 setValue(double) 重命名为 setValue() 并使用 slider->value() 从滑块中获取值。

【讨论】:

感谢 samuel,它解决了语法错误,但我仍然有编译错误 error LNK2019: 无法解析的外部符号“private: void __thiscall MainThread::setValue(int) 当然需要实现setValue函数。这是一个插槽,而不是一个信号。 对不起,我忘了这样做 @Engine QSlider valueChanged(int) 信号返回整数值。因此,您的插槽必须接收 int 参数,即 setValue(int)。如果需要,您可以在 setValue 方法中将整数值更改为加倍。

以上是关于使用 QSlider 改变变量的值的主要内容,如果未能解决你的问题,请参考以下文章

无法从 QWidget 更改 QSlider 的值

QSlider 不滑动

QSlider 和 QSpinBox 之间的 Qt 模型视图架构

如何使 QSlider 只读?

带有两个滑块的QSlider

Qt之QSlider的使用方法