crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Сигналы/Слоты, Как соединить?
ALeXUI
  опции профиля:
сообщение 23.4.2013, 13:33
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 30.4.2011
Пользователь №: 2647

Спасибо сказали: 2 раз(а)




Репутация:   0  


Здравствуйте!

Есть код:

QVBoxLayout *BoxLayout = new QVBoxLayout();
    this->setLayout(BoxLayout);
    int n=5;
    for (int i=0;i<n;i++)
    {
        QPushButton *But = new QPushButton("Button number "+QString::number(i));
        BoxLayout->addWidget(But);
    }



Как в таком случае узнать, какая именна кнопка вызвала сигнал clicked?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 23.4.2013, 15:59
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


ассоциируй их

std::map<QPushButton*,int> m_buttons;//это член класса


     m_buttons.clear();
    for (int i=0;i<n;i++)
    {
        QPushButton *But = new QPushButton("Button number "+QString::number(i));
        BoxLayout->addWidget(But);
        m_buttons[But]=i;
    }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ALeXUI
  опции профиля:
сообщение 23.4.2013, 16:06
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 30.4.2011
Пользователь №: 2647

Спасибо сказали: 2 раз(а)




Репутация:   0  


Честно говоря не понял...
Как connect тогда будет выглядеть?



Сообщение отредактировал ALeXUI - 23.4.2013, 16:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 23.4.2013, 16:30
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Специально для таких случаев есть QSignalMapper
http://qt-project.org/doc/qt-4.8/qsignalmapper.html#details
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 23.4.2013, 16:42
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(ALeXUI @ 23.4.2013, 19:06) *
Как connect тогда будет выглядеть?

хм, ну как обычно. Ассоциация поможет разобраться приёмнику - что именно было нажато
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.4.2013, 22:46
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


а можно соединение делать сразу при создании кнопки.

а в слоте использовать метод QObject::sender()

вообще полезно посмотреть пример Калькулятор
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vankleef
  опции профиля:
сообщение 27.4.2013, 21:51
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 21.10.2010
Пользователь №: 2134

Спасибо сказали: 9 раз(а)




Репутация:   1  


Сделай массив QPushButton
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 13:41