Получение кнопки, нажатой после того, как Clicked () выпущен в Qt (C ++) - PullRequest
3 голосов
/ 14 июня 2010

Мне было интересно, если после нажатия кнопки () нажата кнопка, есть ли способ узнать, какая кнопка испустила ее, не перегружая функцию click ()? (У меня есть несколько кнопок с почти одинаковой функцией, но разным текстом, который является определяющим элементом каждой кнопки).

Заранее спасибо!

Ответы [ 2 ]

10 голосов
/ 14 июня 2010

В вашем слоте вы можете вызвать функцию sender(), чтобы получить объект QObject, который отправил вам сигнал clicked(). Возвращает QObject *. Используйте qobject_cast для приведения QObject * к QPushButton *.

Документация здесь .

6 голосов
/ 14 июня 2010

Возможно, вы захотите использовать QSignalMapper .

В вашем случае, если вас интересует только текст, подключите сигнал clicked() на каждой кнопке к * 1006.* слот на вашем устройстве отображения сигналов, а затем установите отображение строк с помощью setMapping( QObject * sender, const QString & text ).Затем преобразователь сигналов повторно издаст сигнал в виде собственного сигнала mapped( const QString & text ) с правильным текстом для кнопки, на которой была нажата кнопка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...