Russian Qt Forum
Ноябрь 22, 2024, 22:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: задать hotkey  (Прочитано 2734 раз)
raccoon
Новичок

Offline Offline

Сообщений: 4


Просмотр профиля
« : Июль 24, 2021, 20:05 »

всем привет. я только начал изучать qt и сейчас мне нужно добавить возможность смены хоткеев. пробовал искать в гугле, но то ли я неправильно составляю запрос, то ли вообще не то ищу Улыбающийся итак, подробнее: есть форма с настройками горячих клавиш, и нужно добавить возможность изменить hotkey. я ума не приложу как это сделать? единственно что придумывается - вставить кнопку при нажатии на которую будет ожидаться нажатие клавиши или комбинации, но вот как это реализовать хоть примерно?
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #1 : Июль 24, 2021, 20:38 »

Может, поможет: https://evileg.com/ru/post/75/
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
raccoon
Новичок

Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #2 : Июль 24, 2021, 20:59 »

Может, поможет: 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"));
}
« Последнее редактирование: Июль 24, 2021, 21:07 от raccoon » Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #3 : Июль 24, 2021, 21:52 »

Тогда вот https://stackoverflow.com/questions/12558988/qt-keypress-event
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
raccoon
Новичок

Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #4 : Июль 25, 2021, 00:28 »


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

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #5 : Июль 25, 2021, 09:47 »

Наверное, есть несколько вариантов, например - модальная форма.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
raccoon
Новичок

Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #6 : Июль 25, 2021, 14:39 »

Наверное, есть несколько вариантов, например - модальная форма.

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

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Июль 26, 2021, 08:21 »

я добавил диалоговое окно. пока выглядит вот так:
Типичный раздражаюший пост "не по делу"  Улыбающийся Со стандартом/традициями лучше дружить, а не "бороться", себе дороже. Ctrl+O, Ctrl+S - стандартные комбинации, их можно показать, но давать менять не надо. Ctrl+X = "cut", выход Ctrl+Q
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.127 секунд. Запросов: 23.