2013-05-06 4 views
0

Я добавляю список ярлыков (ключи 0-9) к некоторому действию selectOverlay на qt. Как я могу получить, какое нажатие клавиши запустило слот на selectOverlay()?получить нажатие клавиши, вызвавшую функцию на Qt

connect(selectOverlay, SIGNAL(triggered()), this, SLOT(selectOverlay())); 
+0

Вы не можете. Каков ваш прецедент? –

+0

@Frank может быть до 9 слоев на изображении, и я хотел бы, чтобы пользователь мог выбрать каждый из них по нажатию клавиши. FYI Я создал 9 действий, по одному для каждого нажатия клавиши и поместил значение в поле данных. Таким образом, по крайней мере, мне не нужно повторять код запускаемой функции. – quimnuss

ответ

0

Я не пробовал, но.

На слоте можно назвать

QObject::sender() 

Чтобы получить указатель на объект, который сумел запустить сигнал.

Затем вы можете привести указатель к QShorcut или QShorcutEvent

и запроса ключа с key()

В случае сво QAction, вы можете заполнить данные() его с помощью ключа, когда вы создайте его и попросите его после правильного нажатия в слот.

Просто попробуйте, какой случай работает для вас.

0

Это похоже на хороший пример того, когда следует использовать класс QSignalMapper.