我创建了一个QSlider *x_slider[8]
数组,现在我想创建一个连接到这样的插槽,
connect(x_slider[0], SIGNAL(valueChanged(int)), this, SLOT(slider_x(int)));
但是因为我不想为x_slider
数组中的每个滑块创建一个插槽,所以在这种情况下int
接收到的slider_x
插槽应该是 0。
我该怎么做?,在我提供的代码中,它接收int
来自ValueChanged
我创建了一个QSlider *x_slider[8]
数组,现在我想创建一个连接到这样的插槽,
connect(x_slider[0], SIGNAL(valueChanged(int)), this, SLOT(slider_x(int)));
但是因为我不想为x_slider
数组中的每个滑块创建一个插槽,所以在这种情况下int
接收到的slider_x
插槽应该是 0。
我该怎么做?,在我提供的代码中,它接收int
来自ValueChanged
您可以从您的阵列连接每个 QSlider,然后在您的插槽中,slider_x
您可以找出哪个滑块通过sender()
函数发送信号。http://apidocs.meego.com/1.2/qt4/qobject.html#sender
只需遍历您的数组,并且由 sender() 返回的指向对象的指针等于数组中的 QSlider 将意味着您找到了数组的索引。
使用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();
...
}