Russian Qt Forum

Qt => Вопросы новичков => Тема начата: raccoon от Июль 24, 2021, 20:05



Название: задать hotkey
Отправлено: raccoon от Июль 24, 2021, 20:05
всем привет. я только начал изучать qt и сейчас мне нужно добавить возможность смены хоткеев. пробовал искать в гугле, но то ли я неправильно составляю запрос, то ли вообще не то ищу :) итак, подробнее: есть форма с настройками горячих клавиш, и нужно добавить возможность изменить hotkey. я ума не приложу как это сделать? единственно что придумывается - вставить кнопку при нажатии на которую будет ожидаться нажатие клавиши или комбинации, но вот как это реализовать хоть примерно?


Название: Re: задать hotkey
Отправлено: sergek от Июль 24, 2021, 20:38
Может, поможет: https://evileg.com/ru/post/75/ (https://evileg.com/ru/post/75/)


Название: Re: задать hotkey
Отправлено: raccoon от Июль 24, 2021, 20:59
Может, поможет: https://evileg.com/ru/post/75/ (https://evileg.com/ru/post/75/)

я читал это уже. там сигналы назначены на конкретные сочетания, а мне нужно прочитать как-то любые возможные сочетания или просто клавиши. т.е. назначить пользователь может и F3 или ctrl+o к примеру. вот с этим у меня сложности.

так-то у меня вот как сделано:

Код:
void MainWindow::setShortcut()
{
    openAct->setShortcut(keys.value("open"));
    rdOpenAct->setShortcut(keys.value("rdopen"));
    saveAct->setShortcut(keys.value("save"));
    exitAct->setShortcut(keys.value("exit"));
}

где keys - QMap<QString, QKeySequence> keys;

Код:
void MainWindow::initShortcutDefault()
{
    keys.clear();
    keys.insert("open", tr("Ctrl+o"));
    keys.insert("rdopen", tr("Ctrl+r"));
    keys.insert("save", tr("Ctrl+s"));
    keys.insert("exit", tr("Ctrl+x"));
}


Название: Re: задать hotkey
Отправлено: sergek от Июль 24, 2021, 21:52
Тогда вот https://stackoverflow.com/questions/12558988/qt-keypress-event (https://stackoverflow.com/questions/12558988/qt-keypress-event)


Название: Re: задать hotkey
Отправлено: raccoon от Июль 25, 2021, 00:28
Тогда вот https://stackoverflow.com/questions/12558988/qt-keypress-event (https://stackoverflow.com/questions/12558988/qt-keypress-event)

ага, похоже, а как прикрутить это к кнопке? переопределять класс и добавлять туда свои сигналы-слоты на обработку нажатий? попробую. спасибо!


Название: Re: задать hotkey
Отправлено: sergek от Июль 25, 2021, 09:47
Наверное, есть несколько вариантов, например - модальная форма.


Название: Re: задать hotkey
Отправлено: raccoon от Июль 25, 2021, 14:39
Наверное, есть несколько вариантов, например - модальная форма.

я добавил диалоговое окно. пока выглядит вот так:

(https://i.imgur.com/4W5Q8A5.png?1)


Название: Re: задать hotkey
Отправлено: Igors от Июль 26, 2021, 08:21
я добавил диалоговое окно. пока выглядит вот так:
Типичный раздражаюший пост "не по делу"  :) Со стандартом/традициями лучше дружить, а не "бороться", себе дороже. Ctrl+O, Ctrl+S - стандартные комбинации, их можно показать, но давать менять не надо. Ctrl+X = "cut", выход Ctrl+Q