![]() |
|
|
![]()
|
|
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: нет Всего: 12 |
Как узнать свойства нажатой кнопки, нипример свойство text ? и как "слушать" группу кнопок а не писать на каждую
например для калькулятора, чтоб нажатие кнопок с 0 до 9 вызывало функцию а та в свою очередь зная свойство text кнопки вставляла его как переменную -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
| feanor59 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 24.1.2008 Где: Пермь Репутация: нет Всего: нет |
если вопрос свести к: "Как узнать в слоте объект, пославший сигнал?". То скорее всего никак, но тут можно сделать так. В слоте каждой кнопки сделать один единственный emit pushButton(bt.text()); , т. е. высылать сигнал с текстом нажатой кнопки, и ловить этот сигнал каким нить методом.
UPD: можно ещё унаследовать от класса буттона свой класс и добавить туда свой сигнал, который будет вызываться при клике и высылать текст кнопки Это сообщение отредактировал(а) feanor59 - 5.11.2008, 13:50 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
см. http://doc.trolltech.com/3.3/qobject.html#sender
sender () возвращает указатель на объект, пославший сигнал на слот. А дальше можно : 1. сравнить результат с адресами "всех" кнопок и таким образом узнать кто именно является отправителем. 2. Воспользоваться средствами RTTI и привести результат к типу указатель на кнопку. ну а можно как предложил выше feanor59, создать свой класс кнопки который будет передавать слоту id. Это сообщение отредактировал(а) mes - 5.11.2008, 17:49 |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Можно воспользоваться мета-объектной системой. В документации есть удачный пример:
Законнектить все нужные кнопки к одному слоту можно поместив эти кнопки, скажем, в группу и в цикле проходится по детям этой группы. Слот уже будет знать заранее, что его вызывает одна из кнопок этой группы и через sender() можно спокойно делать qobject_cast<> к QPushButton, а там уже вызывать обычные методы этих кнопок. В догонку хорошая статья: http://qt.osdn.org.ua/signalmapper.html Собственно класс QSignalMapper и был создан для работы с массивами элементов управления. Это сообщение отредактировал(а) SABROG - 6.11.2008, 09:37 |
|||
|
||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: нет Всего: 12 |
SABROG, спасибо , то что нужно
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |