Проблема с использованием «connect ()» в итерации в qt4 с сигналами clicked () и использованием информации из итерации в соответствующем слоте - PullRequest
2 голосов
/ 05 мая 2011

Для этого я программирую на c ++, используя qt4 для разработки моего интерфейса.

В этой программе я создаю виджет, который порождает (неизвестное) число QPushButtons в зависимости от пользовательского ввода, поэтому я создаю их динамически. В момент создания я хочу соединить эти кнопки с функцией, которая будет нуждаться в параметрах, существующих в итерации создания кнопок (например, int, который будет указывать позицию в векторе), но я не могу этого сделать из-за природы сигналов / слотов и природы сигнала clicked () от QPushButtons (он не принимает параметры).

Код выглядит примерно так:

vector<int> myVector

for(int i=0; i<user_input_number; i++){

    ...
    QPushButton *testingb4 = new QPushButton("Execute", this);
    connect( testingb4, SIGNAL( clicked() ), this, SLOT( customSlot() ) );
    ...

}

"customSlot" потребуется "i", чтобы определить, к какому элементу моего вектора я должен получить доступ. Как мне решить эту проблему?

1 Ответ

2 голосов
/ 05 мая 2011

Кажется, вы ищете QSignalMapper . Это может помочь вам определить источник сигналов щелчка.

...