void TrayHotkeyHandler::run() { RegisterHotKey(0, 0, MOD_WIN, hotkey); MSG msg; // Allows Qt to send ActivationReason as a signal type qRegisterMetaType<QSystemTrayIcon::ActivationReason>( "QSystemTrayIcon::ActivationReason"); while (1) { msg = { 0 }; GetMessage(&msg, 0, 0, 0); if (msg.message == WM_HOTKEY) { emit hotkeyClicked(QSystemTrayIcon::Trigger); } DispatchMessage(&msg); } }
HotkeyPanel::HotkeyPanel(QWidget *parent) : QDockWidget(parent) { QWidget *hotkeypanels = new QWidget(this); QHBoxLayout *layout = new QHBoxLayout; layout->setSpacing(0); layout->setMargin(0); layout->setContentsMargins(0, 0, 0, 0); for (int i = 1; i < 11; i++) { buttons[i] = new QToolButton(this); layout->addWidget(buttons[i]); connect(buttons[i], &QToolButton::clicked, [=] { emit hotkeyClicked(i); }); } setWidget(hotkeypanels); hotkeypanels->setLayout(layout); hotkeypanels->show(); //hotkeypanels->setMaximumWidth(600); }