首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在变量中使用QSlider

如何在变量中使用QSlider
EN

Stack Overflow用户
提问于 2013-01-02 13:11:19
回答 2查看 19.8K关注 0票数 1

可能重复: Using QSlider to change the value of a variable

我试图使用QSlider来更改变量值:下面是代码的一部分:

代码语言:javascript
复制
 ....
QSlider *slider = new QSlider(Qt::Horizontal,0);
connect(slider,SIGNAL(valueChanged()),this,SLOT(value(int k)));
...

函数值是我想要使用的一个槽,比方说如下:

代码语言:javascript
复制
 void value (int k ) {
cout<< k << endl;
}

我的问题是当我移动滑块时什么都不会发生。?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-02 13:28:16

您必须将参数int放在信号签名上,以使其将值传递给时隙。此外,不要将参数名称放入SIGNAL(...) / SLOT(...)签名规范中。

代码语言:javascript
复制
...
QSlider *slider = new QSlider(Qt::Horizontal, this);
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(value(int)));
...

另外,确保value是类中的一个槽,而不是一个独立的函数。我想您已经将上面的代码放在一个类函数中,而不是main或任何其他独立的函数中,因为在这些函数中没有定义this。因此,您正在讨论的插槽必须是一个成员函数,特别是编写这段代码的类的一个QObject槽。变化

代码语言:javascript
复制
void value (int k) {
    cout << k << endl;
}

代码语言:javascript
复制
void MyClass::value (int k) {
    cout << k << endl;
}

MyClass的类定义中添加一个public slots:部分:

代码语言:javascript
复制
class MyClass : public ... {
    Q_OBJECT
    ...
public slots:
    void value(int);
    ...
}

另外,给你的插槽一个有意义的名字,例如sliderChanged,否则,混乱迟早会支配你的项目。

票数 11
EN

Stack Overflow用户

发布于 2013-01-02 13:27:45

来自qt医生:

http://doc.qt.digia.com/qt/qabstractslider.html#valueChanged

代码语言:javascript
复制
void QAbstractSlider::valueChanged ( int value ) [signal]

我猜想它在运行时找不到valueChanged()信号,所以可能会更改:

代码语言:javascript
复制
...
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(value(int)));
...

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14122695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档