qt调用了获取键盘按键函数,但是为什么没有获取成功

qt调用了获取键盘按键函数,但是为什么没有获取成功,第1张

正常继承QWidget然后实现void keyPressEvent(QKeyEvent event);是能得到key事件,但是要控件获得焦点的时候才可以

如果你想全局捕获鼠标事件

直接实现重新继承实现QApplication

Qt4实现这个函数virtual bool winEventFilter(MSG msg, long result);

Qt5好像没有上面的函数了,所以用:

KeyNativeEventFilter m_keyFilter = new KeyNativeEventFilter();

installNativeEventFilter(m_keyFilter);

然后实现nativeEventFilter:

bool KeyNativeEventFilter::nativeEventFilter(const QByteArray &eventType, void message, long result)

{

#ifdef WIN32

MSG msg = (MSG )message;

if(WM_HOTKEY == msg->message){

const quint32 keycode = HIWORD(msg->lParam); //键盘按键key值

const quint32 modifiers = LOWORD(msg->lParam);

}

}

#endif

return false;

}

Windows下的exe可执行文件的属性中有版本这个信息,含有版本信息、描述、版权等。对于qt程序,要含有这样的信息,那就请如下 *** 作:新建<工程名>rc文件,在rc文件填入下的信息:

#if defined(UNDER_CE)#include <winbaseh>#else#include <winverh>#endifVS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0 PRODUCTVERSION 1,0,0,0 FILEFLAGSMASK 0x3fL#ifdef _DEBUG FILEFLAGS VS_FF_DEBUG#else FILEFLAGS 0x0L#endif FILEOS VOS__WINDOWS32 FILETYPE VFT_DLL FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "080404b0" BEGIN VALUE "CompanyName", "BeiJing XXXX Co, Ltd" VALUE "FileDescription", "Industrial Control System" VALUE "FileVersion", "1000" VALUE "InternalName", "Qt Studioexe" VALUE "LegalCopyright", "Copyright (C)2001-2013" VALUE "OriginalFilename", "Qt Studioexe" VALUE "ProductName", "Qt Studio" VALUE "ProductVersion", "1000" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x804, 1200 END END

然后将pro文件的RC_FILE = <工程名>rc,如此一来编译生成的程序就会含有版本信息。

linux系统下可以如此考虑这个问题如果你的Qt程序涉及到非linux系统,估计不适用。

思路:在/proc 目录下有很多个以数字命名的文件夹,文件夹里面有个名字为 stat的文件,这个文件夹里面记录了PID为该数字的进程的一些信息,当然也包括你需要的进程名字。

基本思路就是这样了,看你怎么处理了。

先创建一个QWidget对象。

1、在Qt程序中创建一个QWidget对象,并调用其show()函数以显示窗口。

2、调用QWidget对象的winId()函数获取窗口句柄(即窗口ID号)。

3、使用XOpenDisplay()函数打开与XServer的连接。

4、使用XCreateSimpleWindow()函数创建一个XWindow,并设置其属性和事件响应函数等。

5、使用XMapWindow()函数将新创建的窗口映射到屏幕上。

6、使用XFlush()函数刷新缓冲区并发送请求给XServer。

无响应情况的发生与QT版本(本noob使用的Qt Creator 480 (Enterprise))无关,在QT使用时突然发作。

表现为内存占用不断上升,直至到达内存上限后QT闪退123

结合广大博友的相似案例,以及自己成功的解决方案,初步判断为QT无响应和显卡/显示驱动/其他软件的进程干涉有关。

解决方案

显卡问题

运行QtCreator的时候不支持某些显卡或者不支持高性能图形处理器

方法1(笔记本适用,台式PC可能不行)

你使用的独立显卡有可能不兼容QT,首选图形处理器选择为自动选择或者集成图形

引用来自>

以上就是关于qt调用了获取键盘按键函数,但是为什么没有获取成功全部的内容,包括:qt调用了获取键盘按键函数,但是为什么没有获取成功、请问下各位大侠,小弟接触QT不到2个星期,想问下,用QT开发出的exe程序属性里如何能显示出版本的信息、Qt如何获取所有的linux进程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10143161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存