使用 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 改变变量的值的主要内容,如果未能解决你的问题,请参考以下文章