可能重复:
使用QSlider更改变量的值
我正在尝试使用QSlider来更改变量值:这是代码的一部分:
....
QSlider *slider = new QSlider(Qt::Horizontal,0);
connect(slider,SIGNAL(valueChanged()),this,SLOT(value(int k)));
...
Run Code Online (Sandbox Code Playgroud)
函数值是我想要使用的SLOT,让我们这样说:
void value (int k ) {
cout<< k << endl;
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当我移动滑块时没有任何反应.?
提前致谢
您必须将参数int放在信号签名上,以使其将值传递给插槽.另外,永远不要在SIGNAL(...)/ SLOT(...)signature规范中加入参数名称.
...
QSlider *slider = new QSlider(Qt::Horizontal, this);
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(value(int)));
...
Run Code Online (Sandbox Code Playgroud)
此外,请确保这value是您班级的一个插槽,而不是一个独立的功能.我猜你已经把上面的代码放在了一个类函数中,而不是在main函数或任何其他独立函数中,因为在这些函数中没有this定义.所以你所谈论的插槽必须是一个成员函数,尤其是你正在编写这段代码的类的QObject插槽.
void value (int k) {
cout << k << endl;
}
Run Code Online (Sandbox Code Playgroud)
至
void MyClass::value (int k) {
cout << k << endl;
}
Run Code Online (Sandbox Code Playgroud)
并在您的类定义中MyClass添加一个public slots:部分:
class MyClass : public ... {
Q_OBJECT
...
public slots:
void value(int);
...
}
Run Code Online (Sandbox Code Playgroud)
另外,例如,给你的插槽一个有意义的名称,sliderChanged否则,混乱会迟早会确定你的项目.
| 归档时间: |
|
| 查看次数: |
15279 次 |
| 最近记录: |