Russian Qt Forum

Программирование => С/C++ => Тема начата: Alexorleon от Июль 24, 2013, 13:11



Название: [РЕШЕНО] Горячие клавиши в приложении
Отправлено: Alexorleon от Июль 24, 2013, 13:11
Здравствуйте, подскажите решение в следующем вопросе.

Как динамически организовать создание горячей клавиши? Объясняю подробно:

По аналогии с настройкой горячих клавиш в linux, нужно отловить комбинацию нажатых клавиш. Что нажал, то и подставилось в комбинацию (в строку). Ctrl+Alt+...
Копаю в сторону QAction, QKeySequence и QShortcut, но во всех примерах комбинация задается сразу.

Например так
QKeySequence(Qt::CTRL + Qt::Key_P);
или так
myShortcut= new QShortcut(Qt::SHIFT + Qt::Key_B,this);
connect(myShortcut, SIGNAL(activated()), this, SLOT(setCameraBack()));

А вот как реализовать это динамически? Возможно ли это стандартными средствами?


Название: Re: Горячие клавиши в приложении
Отправлено: kambala от Июль 24, 2013, 13:35
keyPressEvent


Название: Re: Горячие клавиши в приложении
Отправлено: Alexorleon от Июль 24, 2013, 13:46
keyPressEvent

То что keyPressEvent это понятно, есть ли в QKeySequence или QShortcut стандартный метод для считывания нажатий нескольких клавиш по keyPressEvent.


Название: Re: Горячие клавиши в приложении
Отправлено: kambala от Июль 24, 2013, 14:21
QKeySequence(keyEvent->key() + keyEvent->modifiers())

еще можно было погуглить, первые же ссылки выдают нужный результат:
http://qt-project.org/doc/note_revisions/273/455/view
http://stackoverflow.com/questions/6647970/how-can-i-capture-qkeysequence-from-qkeyevent-depending-on-current-keyboard-layo


Название: Re: Горячие клавиши в приложении
Отправлено: VPS от Июль 24, 2013, 15:38
Если я правильно понял, то можно взять код, в исходниках QtCreator (как это работает, можно посмотреть внизу диалога Options - Keyboard).
Файл: qt-creator-src\src\plugins\coreplugin\dialogs\shortcutsettings.cpp


Название: Re: Горячие клавиши в приложении
Отправлено: Alexorleon от Июль 24, 2013, 16:39
Огромное всем спасибо, а то уже велосипед начал изобретать.