我创建了一个QSlider *x_slider[8]
数组,现在我想创建一个像这样的插槽的连接,
connect(x_slider[0], SIGNAL(valueChanged(int)), this, SLOT(slider_x(int)));
但由于我不想为x_slider
数组中的每个滑块创建一个插槽,int
插槽中收到的slider_x
在这种情况下应为0。
我该怎么办?在我提供的代码中,它从int
ValueChanged
答案 0 :(得分:3)
您可以连接您的阵列中的每个QSlider,然后在您的插槽slider_x
中,您可以找到通过sender()
功能发送信号的滑块。 http://apidocs.meego.com/1.2/qt4/qobject.html#sender
只需遍历你的数组,并且发送者()返回的指向对象的指针等于数组中的QSlider,这意味着你找到了你对数组的指示。
答案 1 :(得分:2)
使用QSignalMapper
:
auto sigMap = new QSignalMapper( this );
for ( int i = 0; i < 8; ++i ) {
x_slider[i] = new QSlider( this );
connect( x_slider[i], SIGNAL( valueChanged( int ) ),
sigMap, SLOT( map() ) );
sigMap->setMapping( x_slider[i], i );
}
connect( sigMap, SIGNAL( mapped( int ) ),
this, SLOT( slider_x( int ) ) );
void MyClass::slider_x( int i )
{
int value = x_slider[i]->value();
...
}