qt如何注册全局热键

1.使得类继承于QAbstractNativeEventFilter(#include <QAbstractNativeEventFilter>)

2.添加槽函数

virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE;

3.在cpp中添加

#ifdef Q_CC_MSVC

#include <windows.h>

#endif

4.在cpp中添加代码注册热键

if (RegisterHotKey((HWND)this->winId(), 100, MOD_CONTROL, 'G') == false)
{
	QMessageBox::information(this, "Error", "HOT Key Error", QMessageBox::Ok);
}

5.在cpp中添加实现代码


bool QtSculput::nativeEventFilter(const QByteArray &eventType, void *message, long *result)
{
	if (eventType == "windows_generic_MSG")
	{
		MSG  *msg = (MSG*)message;
		if (msg->message == WM_HOTKEY && msg->wParam == 100 )
		{			
			//your code
		}
		return true;
	}
	return false;
}

代码来源:万安平 ,博主搬上网而已

感谢。

猜你喜欢

转载自blog.csdn.net/Johnisjohn/article/details/86660015