找回密码
 立即注册
收起左侧

如何使自己的软件运行时屏蔽键盘

21
回复
15423
查看
[复制链接]
累计签到:110 天
连续签到:1 天
来源: 2015-8-24 14:45:48 显示全部楼层 |阅读模式
1Qter豆
自己编写的考试程序,请问如何在自己的软件运行到在线考试的时候屏蔽键盘,只能鼠标操作软件,直至在线考试结束,才恢复键盘事件

最佳答案

查看完整内容

对了,,可能用修改注册表这种办法有点笨,,但是一时间我也想出好办法,,如果你有什么好办法记得留个言哈!我i也学习下(用事件过滤器也试了试,一样不行,因为一点开始键,焦点就不在QT上了,貌似系统比qt更早获得了!)
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-24 14:45:49 显示全部楼层
qq1043068972 发表于 2015-8-27 13:43
刚才试了一下,确实,屏蔽不了"开始"键(你指的就是开始键吧!),,,然后试了试设置成模态,貌似也不行!要是我的 ...

对了,,可能用修改注册表这种办法有点笨,,但是一时间我也想出好办法,,如果你有什么好办法记得留个言哈!我i也学习下(用事件过滤器也试了试,一样不行,因为一点开始键,焦点就不在QT上了,貌似系统比qt更早获得了!)
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-24 20:33:26 显示全部楼层
你的意思是:键盘事件仅仅是不响应你自己的软件,,还是只要你的软件运行起来,,所有的程序,只要是在你电脑上运行饿,,键盘事件都不响应!

点评

是我的程序运行到某一过程时就开始屏蔽键盘事件,等这一过程结束就可以恢复键盘事件。具体来说,刚开始登陆界面,我需要键盘来输入学号密码,等开始考试后,我不希望有任何方式退出正在进行的考试界面(比如window键  详情 回复 发表于 2015-8-25 09:28
回复

使用道具 举报

累计签到:110 天
连续签到:1 天
2015-8-25 09:28:46 显示全部楼层
qq1043068972 发表于 2015-8-24 20:33
你的意思是:键盘事件仅仅是不响应你自己的软件,,还是只要你的软件运行起来,,所有的程序,只要是在你电脑上运 ...

是我的程序运行到某一过程时就开始屏蔽键盘事件,等这一过程结束就可以恢复键盘事件。具体来说,刚开始登陆界面,我需要键盘来输入学号密码,等开始考试后,我不希望有任何方式退出正在进行的考试界面(比如window键点击也不会有反应)。直至考试结束,键盘事件才考虑是否能够进行响应,请大神指导

点评

你看这样行不行?设置一个标志量初始化为true,在登陆界面时可以响应键盘事件,一旦登陆进去,就修改这个标志量为false,,在QkeyPress(..)里判断这个标志量,if( ==false){直接retur} else{......键盘输入学号}  详情 回复 发表于 2015-8-25 13:04
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-25 13:04:40 显示全部楼层
songxinhai91 发表于 2015-8-25 09:28
是我的程序运行到某一过程时就开始屏蔽键盘事件,等这一过程结束就可以恢复键盘事件。具体来说,刚开始登 ...

你看这样行不行?设置一个标志量初始化为true,在登陆界面时可以响应键盘事件,一旦登陆进去,就修改这个标志量为false,,在QkeyPress(..)里判断这个标志量,if( ==false){直接retur} else{......键盘输入学号}

点评

需要屏蔽键盘的时刻只是在线考试的时候,我的软件另外还有别的功能,所以可以认为我只需要在一个自定义考试函数exam内实现屏蔽键盘事件,请问有例子可以给我参考下么?  详情 回复 发表于 2015-8-25 16:05
回复

使用道具 举报

累计签到:110 天
连续签到:1 天
2015-8-25 16:05:41 显示全部楼层
qq1043068972 发表于 2015-8-25 13:04
你看这样行不行?设置一个标志量初始化为true,在登陆界面时可以响应键盘事件,一旦登陆进去,就修改这个标志 ...

需要屏蔽键盘的时刻只是在线考试的时候,我的软件另外还有别的功能,所以可以认为我只需要在一个自定义考试函数exam内实现屏蔽键盘事件,请问有例子可以给我参考下么?

点评

我知道只有在考试的时候屏蔽,,进入考试或退出考试,总的有事件(或者一个标志性的动作)吧!你可以在进入,退出考试的事件(动作)里修改标志量,标志量修改了,自然就可以控制键盘事件的相应了啊!  详情 回复 发表于 2015-8-25 17:49
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-25 17:49:51 显示全部楼层
songxinhai91 发表于 2015-8-25 16:05
需要屏蔽键盘的时刻只是在线考试的时候,我的软件另外还有别的功能,所以可以认为我只需要在一个自定义考 ...

我知道只有在考试的时候屏蔽,,进入考试或退出考试,总的有事件(或者一个标志性的动作)吧!你可以在进入,退出考试的事件(动作)里修改标志量,标志量修改了,自然就可以控制键盘事件的相应了啊!

点评

控制系统键盘事件具体怎么写呢?我比较菜,求详细代码,谢谢  详情 回复 发表于 2015-8-26 17:08
最近好活跃呀~~  详情 回复 发表于 2015-8-26 15:37
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-26 15:37:57 显示全部楼层
qq1043068972 发表于 2015-8-25 17:49
我知道只有在考试的时候屏蔽,,进入考试或退出考试,总的有事件(或者一个标志性的动作)吧!你可以在进入,退 ...

最近好活跃呀~~

点评

恩,最近在学校跟着老师做一个仿真系统,,,没事的时候无聊,暑假学校也没人跟我说话,,所以没事就上论坛啦,,顺便搜搜我不会的问题,嘿嘿  详情 回复 发表于 2015-8-27 08:46
回复

使用道具 举报

累计签到:110 天
连续签到:1 天
2015-8-26 17:08:34 显示全部楼层
qq1043068972 发表于 2015-8-25 17:49
我知道只有在考试的时候屏蔽,,进入考试或退出考试,总的有事件(或者一个标志性的动作)吧!你可以在进入,退 ...

控制系统键盘事件具体怎么写呢?我比较菜,求详细代码,谢谢

点评

比如说,,你先有个标志量flag,初始化为true; 在XXX.h里声明void keyPressEvent(QKeyEvent *e); (注意,如果真的是要重写键盘事件,你声明后,字母是斜体的!) 在对应的XXX.cpp里实现 keyPressEvent(QKeyEvent *e) {  详情 回复 发表于 2015-8-27 08:55
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-27 08:46:16 显示全部楼层
z55716368 发表于 2015-8-26 15:37
最近好活跃呀~~

恩,最近在学校跟着老师做一个仿真系统,,,没事的时候无聊,暑假学校也没人跟我说话,,所以没事就上论坛啦,,顺便搜搜我不会的问题,嘿嘿

点评

大三暑假回去学车了 不然也在学校学东西了  详情 回复 发表于 2015-8-27 16:30
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-27 08:55:14 显示全部楼层
songxinhai91 发表于 2015-8-26 17:08
控制系统键盘事件具体怎么写呢?我比较菜,求详细代码,谢谢

比如说,,你先有个标志量flag,初始化为true; 在XXX.h里声明void  keyPressEvent(QKeyEvent *e); (注意,如果真的是要重写键盘事件,你声明后,字母是斜体的!)   在对应的XXX.cpp里实现  keyPressEvent(QKeyEvent *e)  {  if(flag==false){return;} else{    }   }    什么改falg呢?当你进入考试系统的时候,就把flag改为false,,,这样在考试系统时间,,只要一点键盘,,其实还是会响应键盘事件,,只不过,什么么都不做,就跳出去了.当你退出考试系统的时候,再把flag改为true

点评

我的扣扣617322455 发我这个扣扣邮箱也行,谢谢啦  详情 回复 发表于 2015-8-27 11:35
谢谢,我按照你说的去做了,不过运行起来home键还是能用,最主要我就想屏蔽win8的Home键。不知是不是我哪里弄错了,你能在一个简单的例子里实现这个功能,然后发给我么?我学习下  详情 回复 发表于 2015-8-27 11:34
回复

使用道具 举报

累计签到:110 天
连续签到:1 天
2015-8-27 11:34:34 显示全部楼层
qq1043068972 发表于 2015-8-27 08:55
比如说,,你先有个标志量flag,初始化为true; 在XXX.h里声明void  keyPressEvent(QKeyEvent *e); (注意,如 ...

谢谢,我按照你说的去做了,不过运行起来home键还是能用,最主要我就想屏蔽win8的Home键。不知是不是我哪里弄错了,你能在一个简单的例子里实现这个功能,然后发给我么?我学习下
回复

使用道具 举报

累计签到:110 天
连续签到:1 天
2015-8-27 11:35:07 显示全部楼层
qq1043068972 发表于 2015-8-27 08:55
比如说,,你先有个标志量flag,初始化为true; 在XXX.h里声明void  keyPressEvent(QKeyEvent *e); (注意,如 ...

我的扣扣617322455  发我这个扣扣邮箱也行,谢谢啦

点评

刚才试了一下,确实,屏蔽不了"开始"键(你指的就是开始键吧!),,,然后试了试设置成模态,貌似也不行!要是我的话,,我现在就去看看Qt操作注册表部分,,,然后关了这个"开始"键!程序退出时再打开,,这样应该是行的通的,,我以前  详情 回复 发表于 2015-8-27 13:43
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-27 13:43:48 显示全部楼层
songxinhai91 发表于 2015-8-27 11:35
我的扣扣617322455  发我这个扣扣邮箱也行,谢谢啦

刚才试了一下,确实,屏蔽不了"开始"键(你指的就是开始键吧!),,,然后试了试设置成模态,貌似也不行!要是我的话,,我现在就去看看Qt操作注册表部分,,,然后关了这个"开始"键!程序退出时再打开,,这样应该是行的通的,,我以前用C#操作注册,,屏蔽优盘,,可以通! 不过Qt操作注册表我没玩过,,你去看看,网上有资料,,应该不难,找到对应值,改一下就好了

点评

对了,,可能用修改注册表这种办法有点笨,,但是一时间我也想出好办法,,如果你有什么好办法记得留个言哈!我i也学习下(用事件过滤器也试了试,一样不行,因为一点开始键,焦点就不在QT上了,貌似系统比qt更早获得了!)  详情 回复 发表于 2015-8-27 13:46
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-27 16:30:45 显示全部楼层
qq1043068972 发表于 2015-8-27 08:46
恩,最近在学校跟着老师做一个仿真系统,,,没事的时候无聊,暑假学校也没人跟我说话,,所以没事就上论坛啦,, ...

大三暑假回去学车了 不然也在学校学东西了

点评

哈哈....我大二学的,,,其实想找公司实习的,,可惜他们不要短时间的,,,而且都"嫌弃"我不会安卓!  详情 回复 发表于 2015-8-27 16:34
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-27 16:34:47 显示全部楼层
z55716368 发表于 2015-8-27 16:30
大三暑假回去学车了 不然也在学校学东西了

哈哈....我大二学的,,,其实想找公司实习的,,可惜他们不要短时间的,,,而且都"嫌弃"我不会安卓!

点评

class CControllerEntity : public CDeviceEntity { public: CControllerEntity(); QList *detectors;① QList *extrocontrols;② }; 现在遇到这样一个内存问题, QList *controllers;里面装了很多数据  详情 回复 发表于 2015-8-27 17:12
说实话 java确实比较火 因为现在手机软件挺赚钱  详情 回复 发表于 2015-8-27 17:05
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-27 17:05:56 显示全部楼层
qq1043068972 发表于 2015-8-27 16:34
哈哈....我大二学的,,,其实想找公司实习的,,可惜他们不要短时间的,,,而且都"嫌弃"我不会安卓! ...

说实话 java确实比较火 因为现在手机软件挺赚钱
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-27 17:12:27 显示全部楼层
qq1043068972 发表于 2015-8-27 16:34
哈哈....我大二学的,,,其实想找公司实习的,,可惜他们不要短时间的,,,而且都"嫌弃"我不会安卓! ...

class CControllerEntity : public CDeviceEntity
{
public:
    CControllerEntity();
    QList<CDetectorEntity *> *detectors;①
    QList<CExtrocontrolEntity *> *extrocontrols;②
};
现在遇到这样一个内存问题, QList<CControllerEntity *> *controllers;里面装了很多数据 其中包括①,②,它本身也是一个装指针的集合指针(这里是指针集合还是什么搞不清了)
我现在要删除controllers其中的一个项(指针),这个项下面的①和②怎么删除?
主要是怎么写才不会内存泄漏?

点评

应该是先全部释放了 QList *detectors;① QList *extrocontrols;②指向的内存,,然后才能删除controllers其中的一个项(指针)吧?要不然应该是会内存泄露,,,用双层循环不行? (这个问题点貌似有点猛,,,好多指针!弄  详情 回复 发表于 2015-8-27 20:12
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-8-27 20:12:27 显示全部楼层
z55716368 发表于 2015-8-27 17:12
class CControllerEntity : public CDeviceEntity
{
public:

应该是先全部释放了 QList<CDetectorEntity *> *detectors;①
     QList<CExtrocontrolEntity *> *extrocontrols;②指向的内存,,然后才能删除controllers其中的一个项(指针)吧?要不然应该是会内存泄露,,,用双层循环不行? (这个问题点貌似有点猛,,,好多指针!弄不好就嘿嘿了)

点评

现在内存疯长,但是数据是这样使用的,好麻烦  详情 回复 发表于 2015-8-28 09:23
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-8-28 09:23:15 显示全部楼层
qq1043068972 发表于 2015-8-27 20:12
应该是先全部释放了 QList *detectors;①
     QList *extrocontrols;②指向的内存,,然后才能删除control ...

现在内存疯长,但是数据是这样使用的,好麻烦

点评

内存疯长的话,,,就是内存泄露了吧?!  详情 回复 发表于 2015-8-28 10:24
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了